说我有一个数据框。
level<-c(1:4)
A<-c(1:4)
B<-A^2
C<-A^3
d<-data.frame(level,A,B,C)
然后,我想为数据框中的每一列计算以下指标,但标记为“级别”的列除外。
metric<-function(vector){
distances<-abs(apply(combn(vector,2), 2, diff))
sums<-apply(combn(vector,2), 2, sum)
relativedistances<-distances/sums
output<-sum(relativedistances) / length(distances)
return(output)
}
因此,此函数可以一次处理一个向量。我真正想做的是将函数交给整个数据框,让函数为除了标记为level的列之外的每一列计算度量,然后返回一个包含每个列名和相关度量的新数据框。我想要的输出如下:
observation metric
1 A 0.3515873
2 B 0.5911614
3 C 0.7338014
答案 0 :(得分:2)
例如:
xx <- sapply(d[,-1],metric)
A B C
0.3515873 0.5911614 0.7338014
您可以将结果格式化为data.frame
:
as.data.frame(xx)
xx
A 0.3515873
B 0.5911614
C 0.7338014