首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将相关应用于指定的向量,迭代文件列表?

如何将相关应用于指定的向量,迭代文件列表?
EN

Stack Overflow用户
提问于 2020-09-22 23:48:07
回答 1查看 38关注 0票数 1

我需要获取一个dataframes列表,并将cor()应用于每个列中的相同两个列,并返回一个相关值列表。到目前为止,我的职能如下:

代码语言:javascript
复制
 corr <- function(directory, threshold = 0){

 #reads directory of files

         file_list <- list.files(path = "C:/Users/jonah/Documents/R work/R Coursera Course/specdata")



 # takes file_list and makes each file into dataframe

         dflist <- lapply(file_list, read.csv)



 # returns list of files, na rows stripped

         nolist <- lapply(dflist, na.omit)

 # removes all with nrows < threshold

         abovelist <- nolist[sapply(nolist, function(x) nrow(x) > threshold)]

          

 # runs correlation of nitrate, sulfate on remaining
         correlations <- lapply(abovelist, cor(abovelist$sulfate, abovelist$nitrate))

 }

每个dataframes有四列:日期、硫酸盐数量、硝酸盐数量和ID列。我只关心硫酸盐和硝酸盐(以及它们之间的相关性)。如何设置来处理这些列?

提前谢谢你。

每一个

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-22 23:55:01

您可以在lapply中使用匿名函数来引用对象,就像对sapply一样。

试试这个:

代码语言:javascript
复制
corr <- function(directory, threshold = 0){
  file_list <- list.files(path = directory)
  dflist <- lapply(file_list, function(x) na.omit(read.csv(x)))
  abovelist <- dflist[sapply(dflist, nrow) > threshold]
  correlations <- lapply(abovelist, function(x) cor(x$sulfate, x$nitrate))
  return(correlations)
}

并称之为:

代码语言:javascript
复制
corr("C:/Users/jonah/Documents/R work/R Coursera Course/specdata")
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64019107

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档