我想为许多数据框做关联

I want to do correlation for many data frame

我有将近 13 个文件,我想对其进行三种类型的关联。 除了值之外,所有文件都具有相同的内容。

例如:

v1 v2 v3 v4 v5 v6 v7 v8 .................. v50

v6 和 v20 之间的第一次校正 v7 和 v21 之间的第二相关性 v8 和 v22 之间的第三个相关性

我的数据有缺失值。

为每个文件手动执行会导致脚本太长,我想为所有文件执行循环功能(不幸的是我不是循环功能的专家,我尝试了很多)我需要帮助

如果'd1', 'd2', ...'d13'是数据集并且列的顺序相同,我们可以将数据集放在list 并获取指定列的 cor?cor 中有一些选项可以在存在缺失值的情况下计算协方差。在这里,我使用了na.or.complete。我们可以根据需要进行更改。

lapply(mget(paste0('d', 1:13)), function(x) 
      diag(cor(x[,6:8], x[,20:22], use='na.or.complete'))) 

直接将文件读入 list 可能比在全局环境中创建单个 data.frame 对象更好。假设文件都在工作目录下。

files <- list.files(pattern='file\d+.txt')#change the pattern as needed
lapply(files, function(x) {
                x1 <- read.table(x, header=TRUE)
                diag(cor(x1[,6:8], x1[,20:22], use = 'na.or.complete'))}) 

这是一个强力版本(包括数据生成),它可能适合您的目的,关于您的 data/task 结构的更多信息可能有助于提高效率:

N <- 10
k <- 50

d <- data.frame(matrix(runif(N * k), ncol = k))

sapply(20:k, function(col) cor(d[,col - 14], d[,col]))

编辑:问题已编辑,我不确定这是否真的是您现在想要的。