我有一个名为 的数据框,df其中包含 4000 个值。我有一个包含 1000 个列号的列表,位于一个名为 的数据框中list,它是 1000 行乘 1 列。如何将带有数字的行保留在list数据框中df,然后将其余行丢弃。我已经尝试过使用:
listv <- as.vector(list)
然后使用
dfnew <- df[,listv]
但我得到了错误
Error in .subset(x, j) : invalid subscript type 'list'
我有一个名为 的数据框,df其中包含 4000 个值。我有一个包含 1000 个列号的列表,位于一个名为 的数据框中list,它是 1000 行乘 1 列。如何将带有数字的行保留在list数据框中df,然后将其余行丢弃。我已经尝试过使用:
listv <- as.vector(list)
然后使用
dfnew <- df[,listv]
但我得到了错误
Error in .subset(x, j) : invalid subscript type 'list'
您正在混合行和列子集。这是一个最小的例子:
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在这里(就像我在上一个例子中使用的那样)。