用于创建热图所需的相关矩阵的函数出错?
Error with function used to create correlation matrix needed for heatmap?
我正在尝试创建一个函数,用名为 "master" 的数据框中各列数据之间的相关性填充空数据框 "dummy"。
这是我的功能:
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)
它一直工作到 "return",但是当我 运行 函数 "heatmap_prep" 它 returns 一堆 NA 时。我希望它用所有相关性填充整个矩阵。
我哪里做错了?
非常感谢。
您 dummy
的形状错误 - 列和行在 dummy [i,j] <- result
中的分配方式颠倒了
如果您更改为
,这应该会起作用
dummy <- as.data.frame(matrix(0, nrow=length(vector_a), ncol=length(vector_b)))
我正在尝试创建一个函数,用名为 "master" 的数据框中各列数据之间的相关性填充空数据框 "dummy"。
这是我的功能:
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)
它一直工作到 "return",但是当我 运行 函数 "heatmap_prep" 它 returns 一堆 NA 时。我希望它用所有相关性填充整个矩阵。
我哪里做错了?
非常感谢。
您 dummy
的形状错误 - 列和行在 dummy [i,j] <- result
如果您更改为
,这应该会起作用 dummy <- as.data.frame(matrix(0, nrow=length(vector_a), ncol=length(vector_b)))