【问题标题】:R: To identify whether column names in a dataframe contains stringR:识别数据框中的列名是否包含字符串
【发布时间】:2020-04-01 18:58:44
【问题描述】:

假设我有 2 个数据框:

df1:

Name  Data123   Data321   Age
A     123       321       20

df2:

Name   Age
B      20

我希望检查哪个数据框的列名包含字符串“Data”。如果是,则数据帧将作为一个整体传递给自定义函数。因此,在这种情况下,我希望只将 df1 传递给所述函数。请指教

【问题讨论】:

    标签: r dataframe columnname


    【解决方案1】:

    我们可以使用带有grepl 的函数来实现可重用性(来自base R),用any 包装以返回单个TRUE/FALSE(如果存在带有子字符串'Data' 的列名)和这可以用于上述目的

    f1 <- function(dat, pat) any(grepl(pat, names(dat)))
    f1(df1, '^Data')
    f1(df2, '^Data')
    

    或者startsWith

    f1 <- function(dat, pat) any(startsWith(names(dat), pat))
    f1(df1, 'Data')
    

    【讨论】:

      【解决方案2】:

      您可以使用来自stringr 包的str_detect()

      library(stringr)
      #does any (column) name inside df1 contains "Data"?
      any(str_detect(names(df1), "Data"))
      

      数据:

      df1 <- data.frame(Name = "A", Data123 = 123, Data321 = 321, Age = 20)
      df2 <- data.frame(Name = "B", Age = 20)
      

      【讨论】:

        猜你喜欢
        • 2016-04-15
        • 2020-08-22
        • 1970-01-01
        • 2011-05-26
        • 2019-07-12
        • 1970-01-01
        • 2021-02-09
        • 2021-01-17
        • 2018-10-18
        相关资源
        最近更新 更多