繁体   English   中英

为此功能更有效?

[英]More efficient function for this?

我有一个数据帧,其中有1亿多行。 我需要对带有特定字符(正则表达式)的行进行子集化,但是这会花费很长时间,因为它会逐行读取输入内容。 有更有效的方法吗?

数据和功能的示例。 谢谢!

search_name = function(name) {
      tf = apply(X = hpot["NAME"], 
                 MARGIN = 1, 
                 FUN = grepl, 
                 pattern = name)
      df = hpot[tf == TRUE, ]
      return(df)
}

hpot = data.frame(NAME = c("alpha", "beta", "gamma", "delta", "alpha2",
                           "beta3", "gamma4", "zeta"),
                  AGE = c(12, 23, 34, 45, 56, 67, 78, 89),
                  HEIGHT = c(123, 134, 145, 156, 167, 178, 189, 190),
                  HOUSE = c("A", "B", "C", "D", "A", "B", "C", "D"),
                  stringsAsFactors = FALSE)

>search_name("beta")
   NAME AGE HEIGHT HOUSE
2  beta  23    134     B
6 beta3  67    178     B

谢谢@lmo!

search_name = function(name) {
      return(hpot[grepl(name, hpot$NAME, fixed = TRUE), ])
}

> search_name("beta")
   NAME AGE HEIGHT HOUSE
2  beta  23    134     B
6 beta3  67    178     B

> search_name("alpha")
    NAME AGE HEIGHT HOUSE
1  alpha  12    123     A
5 alpha2  56    167     A

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM