r - 计算两个列表之间的皮尔逊相关性
问题描述
我有许多包含实验数据 (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")
解决方案
推荐阅读
- android - 无法在移动设备上访问 javascript 控制台并且由于缺少计算机任何替代方案而无法使用 USB 调试?
- android - 在 Android 中使用签名 URL 从 Amazon S3 + CloudFront 播放 m3u8
- uwp - UWP 应用启动时 RuntimeBroker 中的异常
- git - 多个 github 帐户的权限被拒绝
- python - 无法登录 Django 管理页面
- tcl - 如何在 VHDL 中检查所有组件层次结构级别的信号值
- scala - 光滑的错误:类型参数的数量错误。预期:0,实际:1
- linux - Linux内核挂起等待中断
- javascript - 在Javascript中传递给函数的数组变量变得未定义
- html - flex 项目不使用 flex-grow 扩展或收缩