我正在尝试创建一个函数,该函数使用称为“主”的数据帧中各列数据之间的相关性来填充空的数据帧“虚拟”。
这是我的功能:
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。我希望它用所有相关性填充整个矩阵。
我哪里出错了?
非常感谢。
答案 0 :(得分:0)
您的dummy
形状错误-在dummy [i,j] <- result
中分配列和行的方式是相反的
如果您将其更改为
dummy <- as.data.frame(matrix(0, nrow=length(vector_a), ncol=length(vector_b)))