我一直在尝试将操作以下函数的列名设置为函数产生的输出。
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]
并且没有进展。
答案 0 :(得分:0)
我们可以遍历&#39; A&#39;使用lapply
并获取mean
列的median
,min
,max
和numeric
。 Filter
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))