在函数中使用for循环,仅返回最后一个值

丹尼尔·沃德

我正在编写一个函数,该函数接受数据目录,然后将其读取,并且(如果达到完整案例的阈值),将计算数据中两个变量(“硫酸盐”和“硝酸盐”)之间的相关性。我希望它在for循环中运行以创建相关值的数字向量(目录中每个文件一个值)。

但是,当我运行代码时,它仅返回最后一个值。

我对R非常陌生(因此可能会犯一些简单的错误,并且安装了R的最新版本)。下面是代码:

corr <- function(directory, threshold = 0) {
  filenames3 <- list.files(directory, pattern = ".csv", full.names = TRUE)
  loop_length <- length(filenames3)
  correlation_values <- numeric()

  for(i in loop_length) {

    read_in_data3 <- read.csv(filenames3[i])
    complete_boolean <- complete.cases(read_in_data3)
    nobs2 <- sum(complete_boolean) 
    data_rmNA <- read_in_data3[complete_boolean, ] 

    if(nobs2 > threshold) {
    correlation_values <- c(correlation_values,
                        cor(data_rmNA[["sulfate"]],
                            data_rmNA[["nitrate"]]))
    }
  }
  correlation_values
}

corr("C:/Users/Danie/OneDrive/Documents/R/specdata")

我尝试指定矢量的长度,例如correlation_values <- numeric(length = loop_length)这将返回正确长度的向量,但是除最后一个正确运行的值外,所有值均为0。我看过类似的问题,但仍然找不到解决我问题的方法。

我假设我在某个地方的循环中丢失了信息(重写变量或其他内容)。

在此先感谢您的帮助。

rr

我认为您需要说些话for(i in 1:loop_length)代替for(i in loop_length)

R将遍历提供的向量中的每个元素,但是现在向量的长度为1,这就是为什么仅返回最后一个值的原因。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章