Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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 从循环中读取文件_R - Fatal编程技术网

R 从循环中读取文件

R 从循环中读取文件,r,R,下面的代码部分包含两个循环。我有一些txt文件,我想在R中分别读取和分析,一个接一个。目前,我面临将它们导入R的问题。例如,第一个文件的名称是“C:/Users/User 1/Documents/Folder 1/1 1986.txt”。为了在R中阅读它,我做了以下循环: ## company for(i in 1) { ## year for(j in 1986) { df=read.delim(paste("C:/Users/User 1/Documents/Folder

下面的代码部分包含两个循环。我有一些txt文件,我想在R中分别读取和分析,一个接一个。目前,我面临将它们导入R的问题。例如,第一个文件的名称是
“C:/Users/User 1/Documents/Folder 1/1 1986.txt”
。为了在R中阅读它,我做了以下循环:

## company
for(i in 1)
{
  ## year
  for(j in 1986)
  {
    df=read.delim(paste("C:/Users/User 1/Documents/Folder 1/", i, j, ".txt"), stringsAsFactors=FALSE, header=FALSE)
    df<-data.frame(rename(df, c("V3"="weight")))
  }
}

如何避免R假定原始文件名中存在的额外间隙?

您应该将
粘贴
替换为
粘贴0


默认情况下,
paste
使用空格作为分隔符,从而生成获得的结果。和
paste0
不使用任何分隔符。

您应该将
paste
替换为
paste0


默认情况下,
paste
使用空格作为分隔符,从而生成获得的结果。而
paste0
不使用任何分隔符。

因为我不知道你的文件到底是什么样子,也许这对你没有帮助。。。但这就是我通过循环读取文件的方式:

第一:设置工作目录

setwd(“/Users/User 1/Documents/Folder 1”)

然后我总是将我的数据保存为一个excel文件和不同的工作表。在这个例子中,我的excel文件名为2000-2014,其中有15张不同的表格,第一张表格名为“2000”,第二张表格名为“2001”,依此类推

sheets <- list() # creating empty list named sheets
for(i in 1:15){
 sheets[[i]] <- read_excel("2000-2014.xlsx", sheet = i) # every sheet will be one layer of the list sheets
 k <- c(2000:2014)
 sheet[[i]]$Year <- k[i] # to every listlayer I add a column "Year", matching the actual year my data is from 
}

sheets因为我不知道你的文件到底是什么样子,也许这对你没有帮助。。。但这就是我通过循环读取文件的方式:

第一:设置工作目录

setwd(“/Users/User 1/Documents/Folder 1”)

然后我总是将我的数据保存为一个excel文件和不同的工作表。在这个例子中,我的excel文件名为2000-2014,其中有15张不同的表格,第一张表格名为“2000”,第二张表格名为“2001”,依此类推

sheets <- list() # creating empty list named sheets
for(i in 1:15){
 sheets[[i]] <- read_excel("2000-2014.xlsx", sheet = i) # every sheet will be one layer of the list sheets
 k <- c(2000:2014)
 sheet[[i]]$Year <- k[i] # to every listlayer I add a column "Year", matching the actual year my data is from 
}

sheets在这种情况下,我会避免循环,而选择lappy

Files <- list.files('C:/Users/User 1/Documents/Folder 1/', pattern = "*.txt")

fileList <- lapply(Files, FUN =- function(x){
  df <- read.delim(x, stringsAsFactors=FALSE, header=FALSE)
  df <- data.frame(rename(df, c("V3"="weight")))
  return(df)
})

do.call('rbind', fileList)

文件在这种情况下,我会避免循环,而选择lappy

Files <- list.files('C:/Users/User 1/Documents/Folder 1/', pattern = "*.txt")

fileList <- lapply(Files, FUN =- function(x){
  df <- read.delim(x, stringsAsFactors=FALSE, header=FALSE)
  df <- data.frame(rename(df, c("V3"="weight")))
  return(df)
})

do.call('rbind', fileList)

文件这有帮助。谢谢@slavutich我的问题解决了最初的问题,但我建议使用其他方法,由other发布,以获得更健壮和可配置的方法。这很有帮助。谢谢@slavutich我的问题解决了原来的问题,但我建议使用其他方法,由other发布,以获得更健壮和可配置的方式。谢谢。我用
paste0
而不是
paste
解决了这个问题。如果我需要将文件放在更大的数据框中,您的解决方案也很有用。谢谢。我用
paste0
而不是
paste
解决了这个问题。你的解决方案也很有用,以防我需要的文件在一个更大的数据框架。谢谢你的建议。我将看一看
lappy
。现在,我用
paste0
而不是
paste
解决了这个问题。谢谢你的建议。我将看一看
lappy
。现在,我通过使用
paste0
而不是
paste
解决了这个问题。
Files <- list.files('C:/Users/User 1/Documents/Folder 1/', pattern = "*.txt")

fileList <- lapply(Files, FUN =- function(x){
  df <- read.delim(x, stringsAsFactors=FALSE, header=FALSE)
  df <- data.frame(rename(df, c("V3"="weight")))
  return(df)
})

do.call('rbind', fileList)