用于创建热图所需的相关矩阵的函数是否出错?

时间:2018-06-20 14:26:38

标签: r function for-loop matrix heatmap

我正在尝试创建一个函数,该函数使用称为“主”的数据帧中各列数据之间的相关性来填充空的数据帧“虚拟”。

这是我的功能:

master <- read.table("~/Desktop/Heatmap_Project/master.txt", header = T, sep = "\t", stringsAsFactors = F)

vector_a <- names(master)[2:4] 
vector_b <- names(master)[11:18]
# Such that, you compare every column in vector_a with every column in vector_b 


heatmap_prep <- function(dataframe, vector_a,vector_b){
    dummy <- as.data.frame(matrix(0, ncol=length(vector_a), nrow=length(vector_b)))
    for (i in 1:length(vector_a)){
                first_value <- dataframe[[ vector_a[i]  ]]
                # print(first_value)
            for(j in 1:length(vector_b)){
                    second_value <- dataframe[[ vector_b[j] ]]
                    # print(second_value)
                    result <- cor(first_value, second_value)
                    dummy [i,j] <- result
            }
        }
        return(as.matrix(dummy))
    }

heatmap_data_matrix1 <- heatmap_prep(master,vector_a, vector_b) 

它可以一直工作到“返回”,但是当我运行函数“ heatmap_prep”时,它将返回一堆NA。我希望它用所有相关性填充整个矩阵。

我哪里出错了?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您的dummy形状错误-在dummy [i,j] <- result中分配列和行的方式是相反的

如果您将其更改为

  dummy <- as.data.frame(matrix(0, nrow=length(vector_a), ncol=length(vector_b)))