我有一个名为df
的数据框,其中包含4000个值。我在一个名为list
的数据框中有1000列数字的列表,它是1000行乘1列。如何在数据框list
中保留df
中的数字行,并将其余部分丢弃。我已经尝试过使用:
listv <- as.vector(list)
然后使用
dfnew <- df[,listv]
但我收到了错误
Error in .subset(x, j) : invalid subscript type 'list'
答案 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
(正如我在上一个例子中所使用的那样)。