计算两个列表之间的皮尔逊相关性

时间:2019-08-01 13:57:18

标签: r list correlation numeric pearson

我有许多结构相同的文本文件,其中包含实验数据(641 * 976)。一开始,我定义了正确的“工作目录”,并在列表中对所有文件进行了排序。因此,我生成了两个不同的列表。一旦file.listx包含我的示例数据,一次file.listy包含参考数据。之后,我重新排列数据以进行相关分析。这里的代码显示了我如何生成“ x”列表。 “ y”列表是与参考数据完全相同的方式生成的。

file.listx <- list.files(pattern="*.txt", full.names=T)

datalist = lapply(file.listx, FUN=read.table, header = F, sep = "\t", skip = 2)
cmbn = expand.grid(1:641, 1:977)
flen = length(datalist)
x=lapply(1:(nrow(cmbn)),function(t,lst,cmbn){
  return(sapply(1:flen,function(i,t1,lst1,cmbn1){
    return(lst1[[i]][cmbn1$Var1[t1],cmbn1$Var2[t1]])},t,lst,cmbn))}
  ,datalist,cmbn)

现在,我想计算两个列表之间的皮尔逊相关性。 http://www.datasciencemadesimple.com/pearson-function-in-excel/ 根据皮尔逊相关公式,我的“ x”对应样本,我的“ y”对应参考。

cor(x, y, method = "pearson")

然后弹出错误消息,提示“ x”必须为数字。我不知道如何解决这个问题。当我使用时,

x = as.numeric(x)

似乎列表结构丢失了。并且以下方法也不能解决问题。

x = as.matrix(x)

如何在不丢失结构的情况下将列表转换为数字类型?我想计算两个列表之间的皮尔逊相关性。

这是生成两个伪列表的代码。这样可以重现错误。

x = list(4:10, 10:16, 32:38, 100:106) # sample
y = list(10:16, 20:26, 40:46, 110:116) # reference
cor(x, y, method = "pearson")

0 个答案:

没有答案