R使用combin与apply

问题描述

我有一个数据框,其中包含许多变量和观察值的百分比值,如下所示:

obs <- data.frame(Site = c("A","B","C"),X = c(11,22,33),Y = c(44,55,66),Z = c(77,88,99))

我需要将此数据准备为网络分析的边缘列表,以“站点”作为节点,其余变量作为边缘。结果应如下所示:

Node1    Node2    Weight  Type
A         B         33     X
A         C         44     X
...
B         C         187    Z       

因此,对于“ Weight”,我们要计算所有可能的对的总和,并分别针对每一列(以“ Type”结尾)进行计算。

我想答案是必须在apply表达式上使用combn,就像这里的Applying combn() function to data frame一样,但是我还不能完全解决。

我可以手工完成“网站”的组合

sites <- combn(obs$Site,2)

然后像这样的各个列

combA <- combn(obs$A,2,function(x) sum(x)

并将这些数据集绑定在一起,但这显然很快变得很烦人。

我试图一次完成所有变量列

b <- apply(newdf[,-1],1,function(x){
sum(utils::combn(x,2))
}
)

但是这有点问题。 有人可以帮忙吗?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)