Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 循环太快,无法读取.csv_R_For Loop_Read.csv - Fatal编程技术网

R 循环太快,无法读取.csv

R 循环太快,无法读取.csv,r,for-loop,read.csv,R,For Loop,Read.csv,我编写了一个循环,读取csv文件并将其重新绑定 vec1 = c(0,1,3,5,9) vec2 = c("mom", "dad") c = data.frame() for(i in length(vec1)) { for (j in length(vec2)) { dir = paste("../data/year ", vec1[i], "/ff_", vec2[j], "_cb", vec1[i], ".csv", sep="") a = read.csv(di

我编写了一个循环,读取csv文件并将其重新绑定

vec1 = c(0,1,3,5,9)
vec2 = c("mom", "dad")
c = data.frame()

for(i in length(vec1))
{
  for (j in length(vec2))
  {
    dir = paste("../data/year ", vec1[i], "/ff_", vec2[j], "_cb", vec1[i], ".csv", sep="")
    a = read.csv(dir)
    Sys.sleep(3)
    c = rbind(c,a)

  }

}
然而,当我尝试执行它时,只有上一次迭代的结果存在。(即,
a
具有上一次迭代的值,
c
a
相同)

我认为这是因为循环太快了,它不会等到read.csv完成后再进入下一个循环。因此,我在里面放了一个sys.sleep(3)

然而,同样的问题依然存在。此外,我可以手动设置
I
j
,以完成此任务,因此语法应该是正确的,但我不知道问题出在哪里


谢谢

您的循环不正确<代码>for(长度为i(vec1))将只执行一次迭代。正确的格式是:
for(i in 1:length(vec1))
例如,尝试以下方法:

vec1 = c(0,1,3,5,9)
vec2 = c("mom", "dad")
for(i in 1:length(vec1))
{
  for (j in 1:length(vec2))
  {
    print(paste(i, j))   
  }  
}
然后用你的陈述重复这个例子。

正如他们在回答中指出的,你的循环是不正确的。虽然他们的答案是正确的,但如果
vec1
vec2
是零长度向量,最好使用
seq_。例如:

vec1 <- integer()
vec2 <- c("mom", "dad")

for(i in 1:length(vec1))
{
  for (j in 1:length(vec2))
  {
    print(paste(vec1[i], vec2[j]))
  }
}
#[1] "NA mom"
#[1] "NA dad"
#[1] " mom"
#[1] " dad"
在这种特定情况下,您甚至不需要整数迭代器。您可以简单地在向量元素本身上循环

vec1 <- c(0, 1)
vec2 <- c("mom", "dad")

for(v1 in vec1)
{
  for (v2 in vec2)
  {
    print(paste(v1, v2))
  }
}
# [1] "0 mom"
# [1] "0 dad"
# [1] "1 mom"
# [1] "1 dad"

那是一个令人尴尬的错误。谢谢。谢谢你的详细解释和提示。但我只能接受一个答案>。很抱歉。
vec1 <- c(0, 1)
vec2 <- c("mom", "dad")

for(v1 in vec1)
{
  for (v2 in vec2)
  {
    print(paste(v1, v2))
  }
}
# [1] "0 mom"
# [1] "0 dad"
# [1] "1 mom"
# [1] "1 dad"