根据数据框保留数据框的列

时间:2013-08-11 05:13:35

标签: r

我有一个名为df的数据框,其中包含4000个值。我在一个名为list的数据框中有1000列数字的列表,它是1000行乘1列。如何在数据框list中保留df中的数字行,并将其余部分丢弃。我已经尝试过使用:

listv <- as.vector(list)

然后使用

dfnew <- df[,listv] 

但我收到了错误

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

1 个答案:

答案 0 :(得分: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(正如我在上一个例子中所使用的那样)。