【问题标题】:How to suppress the function to return "Null" in R?如何抑制函数在 R 中返回“Null”?
【发布时间】:2012-04-29 01:11:36
【问题描述】:

我写了一个 R 函数来返回满足特定要求的行,但是输出格式有问题。

例如,返回具有特定值的行:

xx.1 <- data.frame(aa= 1:5, bb = c("AA","BB","CC","DD","EE"))
xx.2 <- c("AA","DD")
ff_in <- function(x,y){
  if (toupper(x[2]) %in% y) {return(x)}
}
apply(xx.1,1,ff_in,xx.2)

但是,输出看起来像:

[[1]]
aa   bb 
"1" "AA" 

[[2]]
NULL

[[3]]
NULL

[[4]]
aa   bb 
"4" "DD" 

[[5]]
NULL

如何抑制R返回null,并返回类似的东西?

aa bb
"1" "AA" 
"4" "DD" 

【问题讨论】:

    标签: r return


    【解决方案1】:

    怎么样

    do.call(rbind,apply(xx.1,1,ff_in,xx.2))
    

    ?将所有结果逐行组合在一起; rbindNULL 向量无效。

    【讨论】:

    • 但它适用于File_Not_Found 吗? (来自其他技术论坛的坏笑话)
    • 以前从未想过do.call,谢谢!
    【解决方案2】:

    这样做不是更容易吗:

    xx.1[ toupper(xx.1[[2]]) %in% xx.2 , ]
    

    如果您在函数中需要它,我相信这会更快,并且不会产生将数据帧强制转换为字符矩阵的不良副作用。

    exncol <- function(df, coln, choices) df[ toupper(df[[coln]]) %in% choices , ]
    exncol(xx.1, 2, xx.2)
      aa bb
    1  1 AA
    4  4 DD
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-29
      • 2020-09-15
      • 2021-01-06
      • 1970-01-01
      • 2022-11-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多