尝试使用嵌套的for()循环创建相关矩阵

时间:2017-10-27 15:57:56

标签: r loops matrix correlation

我的数据集包含选举投票数据,数值为0-10。  我有30列这些值,我想比较每一列  所有其他列,以创建相关矩阵。 ] 但我不断收到以下错误代码:

 Error in columnlist[i, j] <- cor(feeling_therm[, i], feeling_therm[, j],  : 
      incorrect number of subscripts on matrix

关于如何做到这一点的任何建议?我还是习惯了R的语法。

3 个答案:

答案 0 :(得分:0)

只需使用cor(election)即可。它应该创建相关矩阵。

答案 1 :(得分:0)

正如Nathan Werth所说,cor(election)工作正常。但是,如果您坚持使用for循环,则应将矩阵初始化为矩阵(包括正确的尺寸),而不是列表:

election <- replicate(5, rnorm(n = 100))
election <- as.data.frame(election)

cor_matrix <- matrix(nrow = ncol(election), ncol = ncol(election))

for (i in 1:ncol(election)) {
  for (j in 1:ncol(election)) {
    cor_matrix[i,j] <- cor(election[,i], election[,j], use = "complete")
  }
} 

答案 2 :(得分:0)

如果您的目标是将值存储在列表中,则可以选择以下内容。

n_col <- ncol(election)
electionlist <- as.list(data.frame( matrix(NA, n_col, n_col)))


for (i in 1 : n_col) {
  for (j in 1 : n_col) {
    electionlist[[c(i, j)]] <- cor(election[,i], 
                                election[,j], use = "complete")
  }
}