【问题标题】:Subset dataframe on set of columns regardless if some columns are not present无论某些列是否不存在,都在列集上设置数据帧
【发布时间】:2019-05-15 01:57:58
【问题描述】:

我有一个包含 4 列的数据框。 C1、C2、C3、C4。

到我使用的这些列的子集 3;

myvars <- c("C1", "C2", "C3")
DF <- DF[myvars]

如果缺少 C1、C2 或 C3 之一,则会生成错误消息。

[.data.frame(All, myvars) 中的错误:选择了未定义的列

即使某些列不可用,我也希望进行子集化。所以它会至少对可用的列进行子集化。

【问题讨论】:

    标签: r subset


    【解决方案1】:

    我们可以使用intersect 来获取常用名称,然后根据它进行子集化。

    my_subset <- function(df, vars) {
      df[, intersect(names(df), vars)]
    }
    
    df1 <- data.frame(C1 = 1:4, C2 = 4:7, C3 = 10:13)
    myvars <- c("C1", "C2", "C3", "C4")
    
    my_subset(df1, myvars)
    
    #  C1 C2 C3
    #1  1  4 10
    #2  2  5 11
    #3  3  6 12
    #4  4  7 13
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多