如何将变量名设置为与其操作的列名相同?

时间:2015-09-04 08:29:30

标签: r dataframe

我一直在尝试将操作以下函数的列名设置为函数产生的输出。

for (i in 1:ncol(A)) {
    if (class(A[[i]]) == "numeric")
    a1<-(c(mean(A[[i]]),  median(A[[i]]), min(A[[i]]), max(A[[i]])))
    a2<- as.data.frame(a1,row.names= c("mean", "median", "minimum", "maximum"))
}

我需要A[[i]]的列名而不是我指定的a2。 我试过了names(A)[i]并且没有进展。

1 个答案:

答案 0 :(得分:0)

我们可以遍历&#39; A&#39;使用lapply并获取mean列的medianminmaxnumericFilter NULL元素输出和cbind list元素以获取输出。

res <- do.call(cbind,Filter(length,lapply(A, function(x)
           if(is.numeric(x))
            c(mean=mean(x), median=median(x),minimum= min(x), maximum=max(x)))))
res
#                col1      col3 col4
#mean     0.007221454 0.5245963  1.3
#median   0.134166961 0.4970547  1.5
#minimum -0.848370044 0.1480248  0.0
#maximum  0.847460017 0.9691335  2.0

数据

set.seed(24)
A <- data.frame(col1= rnorm(10), col2=sample(LETTERS[1:3], 10, 
           replace=TRUE), col3=runif(10), col4= sample(0:5, 10, replace=TRUE))