R 将平均值和sd应用于数据表的每一列
我有一个数据表,有三列:准确性、特异性和敏感性。对于每一列,我想计算每一列的平均值和标准差。我希望结果是一个有六列的数据表(accurity.mean,accurity.sd,specification.mean,specification.sd,…)。到目前为止,我做到了:R 将平均值和sd应用于数据表的每一列,r,R,我有一个数据表,有三列:准确性、特异性和敏感性。对于每一列,我想计算每一列的平均值和标准差。我希望结果是一个有六列的数据表(accurity.mean,accurity.sd,specification.mean,specification.sd,…)。到目前为止,我做到了: test<-function(x){ c(mean = mean(x),sd = sd(x)) } b<-a[ ,lapply(.SD, test)] test你很接近了。只要在lappy上使用unlis
test<-function(x){
c(mean = mean(x),sd = sd(x))
}
b<-a[ ,lapply(.SD, test)]
test你很接近了。只要在lappy
上使用unlist
b<-a[ ,unlist(lapply(.SD, test))]
b
#Accuracy.mean Accuracy.sd Specificity.mean Specificity.sd Sensitivity.mean Sensitivity.sd
# 5.50000 3.02765 16.50000 3.02765 105.50000 3.02765
由OP创建的函数
test<-function(x){
c(mean = mean(x),sd = sd(x))
}
<代码>测试请考虑,谢谢。尝试<代码>谢谢,它工作。你能解释一下使用unlist的原因吗?以及如何使结果成为数据table@costa_25lappy
将为每列调用一次(在您的情况下为3次)。它将返回一个包含3个项目的列表(每个项目包含2个leaf)。默认情况下,它将强制显示在2行中,但取消列出将使其成为1行。试试这两个,你就会明白:1)lappy(a,test)%%>%as.data.frame()
2)lappy(a,test)%%>%unlist()
test<-function(x){
c(mean = mean(x),sd = sd(x))
}
library(data.table)
a<- data.table(Accuracy = 1:10, Specificity = 12:21, Sensitivity = 101 : 110)