我正在使用一个非常宽的数据框,其中包含100多个列名。我正在寻找使用以下代码在每列中搜索数据的结构:
funfilter <- function(col) {
print(col)
output <- d$col[d$col != ""]
print(output)
}
for(i in 23:length(colnames(d))){
funfilter(colnames(d)[i])
}
此代码产生的输出变量为NULL。有没有更好的方法可以做到这一点?如果可能的话,我宁愿使用R-base。
答案 0 :(得分:1)
您可以使用基本lapply
/ sapply
来实现输出
lapply(d[23:ncol(d)], function(x) x[x != ""])
这将为您提供矢量列表,其中列中的值不为空(""
)。
使用可复制的示例
d <- data.frame(a = 1:5, b = c(1, 2, 3, "", 4), c = c("", 1, "", 3, ""),
stringsAsFactors = FALSE)
lapply(d[2:ncol(d)], function(x) x[x != ""])
#$b
#[1] "1" "2" "3" "4"
#$c
#[1] "1" "3"