【发布时间】:2016-12-16 22:19:46
【问题描述】:
R 新手,在我头上!
我正在尝试编写将结合以下步骤的代码:
a) 找出每行两列之间的最小值
b) 求和找到的最小值
c) 在许多列中执行此操作并构造结果的成对矩阵
步骤 a 和 b 很容易一次处理两列。像这样:
column1 = c(0.08, 0.20, 0.09, 0.19, 0.25, 0.20, 0.00)
column2 = c(0.07, 0.19, 0.09, 0.21, 0.25, 0.19, 0.00)
ps = data.frame(column1, column2)
sum(pmin(ps$column1,ps$column2))
但是对于步骤 c,我很难编写一个代码,该代码将为由 7 行和 32 列组成的数据帧中的每个成对列比较执行此操作。到目前为止,这是我想出的:
d <- replicate(32, rnorm(7))
c <- combn(seq_len(ncol(d)),2)
mat1 <- matrix(0,ncol=32,nrow=32,dimnames=list(colnames(d),colnames(d)))
v1 <- unlist(lapply(seq_len(ncol(c)),function(i) {d1<-d[,c[,i]]; length(which(d1[,1]!=0 & d1[,2]!=0)) }))
mat1[lower.tri(mat1)]<-v1
我很确定我的问题在于与“v1”相关的“功能”命令。但我很难过,真的需要一点帮助!
同样,我的目标是在每个成对列比较之间创建一个 32x32 的求和最小值矩阵。
这有意义吗?
非常感谢。
【问题讨论】:
标签: r matrix multiple-columns