如何计算一个函数中的几个列名?

时间:2019-04-02 04:18:00

标签: r r-base

我正在使用一个非常宽的数据框,其中包含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。

1 个答案:

答案 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"