Function R函数,如果条件满足,则计算数据帧两个元素之间的相关性

Function R函数,如果条件满足,则计算数据帧两个元素之间的相关性,function,r,Function,R,所以我已经试着让这个函数工作了好几天 功能行为应如下所示: 转到抛出多个指定的csv=id 读取.csv并在一个数据帧中对其进行rbind 删除所有具有na值的行,并仅保留完整的行。条件1 然后,如果数据[行编号,列1]+数据[行编号,列2]>阈值之和, 然后我们保留该行,否则该行将被删除 最后,将元素1与元素2关联起来,并返回所有关联完成的列表 我的代码: corr <- function(directory,threshold = 0,id = 1:332) { file.l

所以我已经试着让这个函数工作了好几天

功能行为应如下所示:

  • 转到抛出多个指定的csv=id
  • 读取.csv并在一个数据帧中对其进行rbind
  • 删除所有具有na值的行,并仅保留完整的行。条件1
  • 然后,如果数据[行编号,列1]+数据[行编号,列2]>阈值之和, 然后我们保留该行,否则该行将被删除
  • 最后,将元素1与元素2关联起来,并返回所有关联完成的列表 我的代码:

    corr <- function(directory,threshold = 0,id = 1:332)   {
    
      file.list <- list.files(directory, full.names = T)
      dat <- data.frame()
      for(i in id) {
      dat <- rbind(dat,read.csv(file.list[i]))
      }
      complete_rows <- dat[complete.cases(dat),]
      z <- data.frame()
      z <- complete_rows[,2:3]
      y <- data.frame()
      y <- rowSums(z) > threshold
      x <- data.frame()
      x <- z[y,1:2]
      for( i in x[1:nrow(x),]){
       cor(x[i,1],x[i,2], method = c("pearson"))
       }
          }
    
    corr试试这个:

       corr  <- function(directory, threshold = 0) {
         files <- list.files(directory, full.names = T)
         dat2 <- lapply(files, function(x) na.omit(read.csv(x)))
         size <- unlist(lapply(dat2, nrow))
         cors <- lapply(dat2[size > threshold], function(x) cor(x['nitrate'], x['sulfate']))
         res <- unname(unlist(cors)) 
       }
    
    corr试试这个:

       corr  <- function(directory, threshold = 0) {
         files <- list.files(directory, full.names = T)
         dat2 <- lapply(files, function(x) na.omit(read.csv(x)))
         size <- unlist(lapply(dat2, nrow))
         cors <- lapply(dat2[size > threshold], function(x) cor(x['nitrate'], x['sulfate']))
         res <- unname(unlist(cors)) 
       }
    

    corr您的代码可能需要一些清理。例如,您不需要
    z,我在末尾对它做了一点修改,使其在没有For循环的情况下尝试x
    cor(x[,1],x[,2])
    您的代码需要一些清理。例如,您不需要
    z,我在末尾对它做了一点修改,使其在没有For循环的情况下尝试x
    cor(x[,1],x[,2])
    您的代码需要一些清理。例如,您不需要
    z,我在末尾对它做了一点修改,使其在没有For循环的情况下尝试x<代码>cor(x[,1],x[,2])