我有一个包含300多列的数据帧df1,我试图根据list1中的几十个输入按列名将其子集化为df2。但是,list1中的某些项实际上不是df1中的列名。所以,我得到一个"未定义的列"错误:
df2< - df1 [,list1]
[.data.frame
(df1 ,, list1)中的错误:
选择了未定义的列
我意识到这个错误的原因。但我不能通过list1查看df1中出现哪些以及哪些不出现。因为我必须多次使用许多不同的列表。有没有办法简单地忽略那些(并且不包括子集df2中list1的那些空列名值)?
感谢您的帮助。
答案 0 :(得分:1)
如何:df2 <- df1[,list1[list1 %in% names(df1)]]
答案 1 :(得分:1)
我希望有一个更好/更短的解决方案供我自己使用。 这是另一个
df1[,intersect(names(df1), list1)]