首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >循环中的read.csv

循环中的read.csv
EN

Stack Overflow用户
提问于 2021-01-12 01:45:00
回答 2查看 39关注 0票数 1

我有四个csv文件,我想用for循环来输入它们。它们都具有相同的大小,只是文件名不同。现在我是这样做的:

代码语言:javascript
复制
Kleinheubach_GKD <- read.csv("/path_to_file/Kleinheubach.csv", skip= 10, header = T, nrows= 61, sep = ";")
Schwabelweis_GKD <- read.csv("/path_to_file/Schwabelweis.csv", skip= 10, header = T, nrows= 61, sep = ";")
Landau_GKD <- read.csv("/path_to_file/Landau.csv", skip= 10, header = T, nrows= 61, sep = ";")
Passau_GKD <- read.csv("/path_to_file/Passau.csv", skip= 10, header = T, nrows= 61, sep = ";")

这样做是可行的,但并不是很优雅,尤其是在处理大量文件时。

所以我想用一个循环或者其他什么东西来实现同样的结果。这是我尝试过的一种方法,但没有奏效:

代码语言:javascript
复制
for (i in c("Kleinheubach", "Schwabelweis", "Landau", "Passau")) {
   assign(paste0(i,"_GKD"), read.csv(paste("/path_to_file/", i,".csv_, skip= 10, header = T, nrows= 61, sep = ";"", sep="")))
}

我很确定这个问题与引号的错误用法有关。paste命令和文件路径都需要它们。我尝试了""''的不同组合,但还没有找到适合这种情况的正确组合。

有人知道这种情况下的正确用法吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-01-12 01:46:06

在循环中,paste将是paste0,它应该是)

代码语言:javascript
复制
paste0("/path_to_file/", i,".csv")
票数 2
EN

Stack Overflow用户

发布于 2021-01-12 01:53:20

这是一种使用file.path构造完整文件名和读取数据的lapply的方法。注意,read.csv已经设置了header = TRUE,不需要重复。

代码语言:javascript
复制
filenames <- c("Kleinheubach", "Schwabelweis", "Landau", "Passau")

file.path("/path/to/file", filenames)
#[1] "/path/to/file/Kleinheubach" "/path/to/file/Schwabelweis"
#[3] "/path/to/file/Landau"       "/path/to/file/Passau"      

df_list <- lapply(file.path("/path/to/file", filenames), read.csv, skip= 10, nrows= 61, sep = ";")

names(df_list) <- paste(filenames, "GKD", sep = "_")

为了在.GlobalEnv中具有数据集,

代码语言:javascript
复制
list2env(df_list, envir = .GlobalEnv)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65671970

复制
相关文章

相似问题

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