1

我有一个名为 的数据框,df其中包含 4000 个值。我有一个包含 1000 个列的列表,位于一个名为 的数据框中list,它是 1000 行乘 1 列。如何将带有数字的行保留在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 回答