Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.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
通过列表或向量将CSV动态读入R dfs?_R_Csv - Fatal编程技术网

通过列表或向量将CSV动态读入R dfs?

通过列表或向量将CSV动态读入R dfs?,r,csv,R,Csv,我正在处理一些年度和季度数据,我想写一个循环,循环读取每年四个不同CSV的四个季度的数据,然后在它们上运行一个脚本 #prep strings beg <- "fmli" end <- ".csv" fileList <- c() for(i in 1996:2012){ yearString <- toString(i) year <- substr(toString(i), 3,4) for(i in 1:4){ quarter <

我正在处理一些年度和季度数据,我想写一个循环,循环读取每年四个不同CSV的四个季度的数据,然后在它们上运行一个脚本

#prep strings

beg <- "fmli"
end <- ".csv"

fileList <- c()

for(i in 1996:2012){
  yearString <- toString(i)
  year <- substr(toString(i), 3,4)
  for(i in 1:4){
    quarter <- toString(i)
    fileToRead <- paste(sep="", beg, year, quarter, end)
    #add to list
    #fileList <- append(fileToRead, i)
  }
  a1 <- read.csv(fileList[1])
  a2 <- read.csv(fileList[2])
  a3 <- read.csv(fileList[3])
  a4 <- read.csv(fileList[4])
}
#准备字符串
beg使用列表:

beg <- "fmli"
end <- ".csv"

for(i in 1996:2012){
  yearString <- toString(i)
  year <- substr(toString(i), 3,4)
  dataList <- list()
  for(j in 1:4){
    quarter <- toString(j)
    fileToRead <- paste(sep="", beg, year, quarter, end)
    #add to list
    dataList[[j]] <- read.csv(fileToRead)
  }
    names(dataList) <- c("a1", "a2", "a3", "a4")
    # then run your script on dataList[["a1"]], dataList[["a2"]], etc.
}
beg使用列表:

beg <- "fmli"
end <- ".csv"

for(i in 1996:2012){
  yearString <- toString(i)
  year <- substr(toString(i), 3,4)
  dataList <- list()
  for(j in 1:4){
    quarter <- toString(j)
    fileToRead <- paste(sep="", beg, year, quarter, end)
    #add to list
    dataList[[j]] <- read.csv(fileToRead)
  }
    names(dataList) <- c("a1", "a2", "a3", "a4")
    # then run your script on dataList[["a1"]], dataList[["a2"]], etc.
}

beg以下是我的做法。不要对
s使用
,而是使用
lappy
。其中的函数返回的对象将是列表的一部分

lapply(setNames(1996:2012, paste0("y", 1996:2012)), function(y) {
  year <- substr(y, 3, 4)
  lapply(setNames(1:4, paste0("a", 1:4)), function(qt) {
    fileToRead <- paste0("fmli", y, qt, ".csv")
    read.csv(fileToRead)
  })
})
lappy(setNames(1996:2012,paste0(“y”,1996:2012)),函数(y){

年份我会这样做。与其使用
for
s,不如使用
lappy
。函数返回的对象将是列表的一部分

lapply(setNames(1996:2012, paste0("y", 1996:2012)), function(y) {
  year <- substr(y, 3, 4)
  lapply(setNames(1:4, paste0("a", 1:4)), function(qt) {
    fileToRead <- paste0("fmli", y, qt, ".csv")
    read.csv(fileToRead)
  })
})
lappy(setNames(1996:2012,paste0(“y”,1996:2012)),函数(y){

年份我总是使用
assign
读取我的.csv文件

#prep strings

beg <- "fmli"

end <- ".csv"

a <- c("a1", "a2", "a3", "a4");

for(i in 1996:2012){
  year <- substr(toString(i), 3,4)
  for(j in 1:4){
    quarter <- toString(j)
    fileToRead <- paste(beg, year, quarter, end, sep="")
    assign(a[j], read.csv(file=fileToRead));
  }

  # Now use your script on a1-a4
  # a1-a4 will be overwritten in next iteration

}
#准备字符串

beg我总是使用
assign
来读取我的.csv文件

#prep strings

beg <- "fmli"

end <- ".csv"

a <- c("a1", "a2", "a3", "a4");

for(i in 1996:2012){
  year <- substr(toString(i), 3,4)
  for(j in 1:4){
    quarter <- toString(j)
    fileToRead <- paste(beg, year, quarter, end, sep="")
    assign(a[j], read.csv(file=fileToRead));
  }

  # Now use your script on a1-a4
  # a1-a4 will be overwritten in next iteration

}
#准备字符串

beg可能重复的
paste
可能重复的内容将试图强制使用字符,但我认为OP更广泛的一点是,他们错误地将
toString
误认为是
as.character
设计的,我想。@joran确实,我甚至忘记了这一点。这就是为什么我看起来像是在读另一种语言年龄…
paste
将试图强制使用字符,但我认为OP更广泛的一点是,他们错误地将
toString
误认为
是为.character
设计的。我想。@joran确实,我甚至忘记了这一点。这就是为什么我看起来像是在读另一种语言的原因……这不起作用,因为“赋值”仅适用于字符串--这将返回“第一个参数无效”错误…有什么想法吗?很抱歉给您带来不便。当然,数组
a
必须包含字符串,并且需要使用
a[j]
而不是
a[i]
来访问它。这将不起作用,因为“分配”仅适用于字符串--这将返回“第一个参数无效”错误…有什么想法吗?很抱歉给您带来不便。当然,数组
a
必须包含字符串,并且需要使用
a[j]
而不是
a[i]进行访问
无论出于何种原因,这只会将数据帧的一列附加到列表中,而列表将成为一个包含4个整数向量的列表。为什么会发生这种情况?是的。我想明白了。此外,将内部循环中的第二个i更改为“j”可能更有意义,就像其他人所做的那样。但这起到了作用,并且最接近i w作为请求,所以我将继续并打勾:)打得好,覆盖
I
完全没有破坏一切:)不管出于什么原因,这只会将数据帧的一列附加到列表中,列表就变成了一个包含4个整数向量的列表。为什么会发生这种情况?是的。我明白了。而且,像其他人一样,将内部循环中的第二个i改为“j”可能更有意义。但这是有效的,并且最接近于我的asking为,所以我将继续并打勾:)打得好,覆盖
I
完全没有破坏一切:)