1

df4000 個の値を含むというデータ フレームがあります。と呼ばれるデータフレームに、1000 行 x 1 列の 1000 列番号のリストがありlistます。list数字を含む行をデータ フレームに保持dfし、残りを捨てるにはどうすればよいですか。私はすでに使用してみました:

listv <- as.vector(list)

そして使用する

dfnew <- df[,listv] 

しかし、私はエラーが発生します

Error in .subset(x, j) : invalid subscript type 'list'
4

1 に答える 1

3

行と列のサブセットを混同しています。最小限の例を次に示します。

df <- data.frame(matrix(1:21, ncol = 3))
df
#   X1 X2 X3
# 1  1  8 15
# 2  2  9 16
# 3  3 10 17
# 4  4 11 18
# 5  5 12 19
# 6  6 13 20
# 7  7 14 21
list <- data.frame(V1 = c(1, 4, 6))
list
#   V1
# 1  1
# 2  4
# 3  6
df[list[, 1], ]
#   X1 X2 X3
# 1  1  8 15
# 4  4 11 18
# 6  6 13 20
df[unlist(list), ]
#   X1 X2 X3
# 1  1  8 15
# 4  4 11 18
# 6  6 13 20

as.vector(list)あなたが思ったように、それはベクトルを作成しないことにも注意してください。ここが必要unlistです (最後の例で使用したように)。

于 2013-08-11T05:24:50.257 に答える