可能性のある複製:
R:空のデータフレームに行を追加すると列名が失われる
次のように列名のみで空のデータフレームを作成しました
> compData <- data.frame(A= numeric(0), B= numeric(0))
> compData
[1] A B
<0 rows> (or 0-length row.names)
> compData <- rbind(compData,c(5,443))
> compData
X5 X443
1 5 443
上記では、1行を追加した後、列名が変更されます。新しい行データをデータフレームに追加するにはどうすればよいですか?
ゼロ行_data.frame
_に追加すると、既に行が含まれている_data.frame
_に追加する場合とは異なる動作をします
_?rbind
_から
Rbindデータフレームメソッドは、最初にすべてのゼロ列引数とゼロ行引数を削除します。 (それが何も残さない場合、列を含む最初の引数を返します。それ以外の場合はゼロ列ゼロ行データフレームを返します。)その後、列のクラスを最初のデータフレームから取得し、(位置ではなく)名前で列を照合します。ファクターのレベルは必要に応じて(発生したファクターのレベルセットのレベルの順に)拡張され、結果はすべてのコンポーネントが順序付けられたファクターである場合にのみ順序付けられたファクターになります。 (最後の点はS-PLUSとは異なります。)古いスタイルのカテゴリ(レベルを持つ整数ベクトル)は、因子に昇格されます。
いくつかのオプションがあります-
_ compData[1, ] <- c(5, 443)
_
または、c(5,433)
をリストまたはdata.frameに強制できます。
_rbind(compData,setNames(as.list(c(5,443)), names(compData)))
_
または
_rbind(compData,do.call(data.frame,setNames(as.list(c(5,443)), names(compData))))
_
しかし、この場合、あなたもするかもしれません
_do.call(data.frame,setNames(as.list(c(5,443)), names(compData)))
_
_data.table
_関数rbindlist
を使用すると、チェックが少なくなり、最初のdata.frameの名前が保持されます。
_library(data.table)
rbindlist(list(compData, as.list(c(5,443))
_
私はそれを行う簡単な方法を得ました...次のように
compData <- data.frame(A= numeric(0), B= numeric(0))
compData
compData[nrow(compData)+1, ] <- c(5, 443)
compData
Colnames <- names(compData)
compData <- rbind(compData, c(5, 443))
names(compData) <- Colnames
インデックスによってデータフレームに割り当てることができます:
compData <- data.frame(A= numeric(0), B= numeric(0))
compData
compData[1, ] <- c(5, 443)
compData
与えるもの:
> compData <- data.frame(A= numeric(0), B= numeric(0))
> compData
[1] A B
<0 rows> (or 0-length row.names)
> compData[1, ] <- c(5, 443)
> compData
A B
1 5 443
同じタイプのデータがある場合は、次を実行できます。
as.matrix(compData)
rbind(as.matrix(compData), c(5,443))
as.data.frame(rbind(as.matrix(compData), c(5,443)))
要するに:compData <- as.data.frame(rbind(as.matrix(compData), c(5,443)))
*同じタイプのデータがある場合、それらをマトリックスに保持することもできます。
関数structure
を.Names
引数とともに使用できます。
compData <- structure(rbind(compData,c(5,443)), .Names = names(compData))
# A B
#1 5 443