我编写了一个 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"
最佳答案
这样做会不会更容易:
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
关于r - 如何抑制函数在 R 中返回 "Null"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10195586/