创建一个函数,用于计算数据框中列子集的度量。

时间:2014-06-19 21:08:03

标签: r

说我有一个数据框。

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

1 个答案:

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