首页 > 解决方案 > 在矩阵usinf“for”中分配列名

问题描述

我有 n 个因子,并将这些因子的 n(n-1)/2 个组合作为矩阵中的列。现在,我想分配列的名称,因为每个名称都向我展示了哪两个因素结合在一起。这是我写的。但错误是“dinames 的长度不等于数组内容”。你有什么建议?

for (i in 1:ncol(X_ok)) { 
for (j in i:ncol(X_ok)) {
if(i == j){
next
}
   colnames(out_or)<-paste0(colnames(X_ok)[i],colnames(X_ok)[j], sep='*')
  }
}

标签: rmatrix

解决方案


您可以很容易地生成所有可能的组合,X_ok而无需使用for循环:

X_ok <- LETTERS[1:5] # as an example

combinations <- combn(X_ok, 2)

然后,您可以按列连接输出以获取由分隔的新名称*

colnames(out_or) <- apply(combinations, 2, paste, collapse = "*")

推荐阅读