如何修复for循环中“ i”的错误定义

时间:2019-05-02 12:37:23

标签: r loops for-loop

我有一个数据框“ data_all”,它是包含67个元素的列表。 对于每个元素,我正在计算第一列“ EDA”的平均值。 为此,我使用了for循环:

for (i in seq_along(data_all)) { 
  mean_all[i] <- print(round(mean(data_all[[i]][["EDA"]]), digits=3)) 
}

问题: 在全局环境中,“ i”定义为“ 1L”,一个单一值而不是67个值。值:i = 1L

我尝试用rm(i)删除“ i”值,然后再次加载代码。我还关闭并重新启动了该程序,然后再次导入了所有数据。 由于某些原因,即使我的“ data_all”列表包含67个元素,“ i”也会注册为“ 1L”。 在某个时候,我能够进行计算,并且代码可以正常工作。下次我打开程序时,它不再起作用。

我尝试搜索该问题,但找不到任何存在相同问题的人。

以下是我的r代码的摘录:

导入的数据:

filenames <- list.files(pattern="*.dat", full.names=FALSE)
data_all <- lapply(filenames, function(x) read.delim(x, "", header = TRUE, sep = ";", quote = "\"", dec = ",", fill = TRUE))

循环:

for (i in seq_along(data_all)) { 
  mean_all[i] <- print(round(mean(data_all[[i]][["EDA"]]), digits=3)) 
}

错误:

  

[1] 10.938   错误:找不到对象'mean_all'

我期望有67个元素的列表:

[1] 10.56
[1] 12.46
...
[1] 13.72

相反,我只收到一个结果:

[1] 10.938

并且由于“ i”仅包含一个值而不是67,因此r无法将输出另存为新变量“ mean_all [i]”

对于此问题的任何帮助,我们将不胜感激。如果我只知道在哪里寻求帮助,我不介意自己研究它。

谢谢。

0 个答案:

没有答案