R:在对数据帧进行子集化时省略未定义的列

时间:2015-01-14 19:49:56

标签: r error-handling

我有一个包含300多列的数据帧df1,我试图根据list1中的几十个输入按列名将其子集化为df2。但是,list1中的某些项实际上不是df1中的列名。所以,我得到一个"未定义的列"错误:

  

df2< - df1 [,list1]
  [.data.frame(df1 ,, list1)中的错误:
    选择了未定义的列

我意识到这个错误的原因。但我不能通过list1查看df1中出现哪些以及哪些不出现。因为我必须多次使用许多不同的列表。有没有办法简单地忽略那些(并且不包括子集df2中list1的那些空列名值)?

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如何:df2 <- df1[,list1[list1 %in% names(df1)]]

答案 1 :(得分:1)

我希望有一个更好/更短的解决方案供我自己使用。 这是另一个

df1[,intersect(names(df1), list1)]