【问题标题】:In R, how do I select variables from a data frame by string contained in names - either/or在 R 中,如何通过名称中包含的字符串从数据框中选择变量 - 或者/或
【发布时间】:2015-06-16 11:11:46
【问题描述】:

我知道如何根据包含一个已定义字符串的列名从大型 data.frame 中选择变量,如:(How do I select variables in an R dataframe whose names contain a particular string?)

但是如何从包含一个字符串或另一个的对象中选择列?

我希望不必拆分和重新组合 df,以便将各列保持其原始顺序。

这是我的示例代码,使用grep,用于获取仅匹配第一个字符串的变量,效果很好:

df[grep("top",names(df),fixed=TRUE)]

grep 不会采用逻辑运算符。那么如何选择列名中带有“base”的第二组列呢?

【问题讨论】:

  • df[grep("top|base", names(df))]?
  • grep 不会采用逻辑运算符 -> 实际上它会;或者使用 stringr 包中的 str_detect,如下所示:df[str_detect(names(df), "top|base")]
  • 我试过这个,但是它返回一个包含所有行但没有变量的 df 对象。我不认为 grep 像 | 这样的逻辑运算符。
  • 哦,我想通了 - 使用参数fixed=TRUE 意味着运算符将不起作用:)

标签: r dataframe variables


【解决方案1】:

这应该可行:

df[grep("base",colnames(df))[2]]

或者,以更准确且不易出错的方式:

df[,grep("base",colnames(df))[2],drop=FALSE]

在这两种情况下,行尾的 [2] 指定您请求 df 的第二列,该列的名称中包含字符串“base”。

【讨论】:

    猜你喜欢
    • 2011-11-25
    • 2019-05-28
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-16
    相关资源
    最近更新 更多