【问题标题】:How to read in multiple files in a folder using paste in R如何使用 R 中的粘贴读取文件夹中的多个文件
【发布时间】:2019-08-17 12:42:37
【问题描述】:

函数排序运行。它输出一个年份列表,而不是读取我计算机上的 104 个文件。我也尝试过设置 knitr,并在 cmets 中列出了下面列出的代码。我对函数内部的想法持开放态度(year="all"),但我的作业要求我们使用粘贴函数。

    setwd("C:/Users/Sarah/Downloads/names-full-datasets/names-full-datasets")
    library(purrr)
    baby.names <- function(year="all"){
    if(year!="all"){cnames <- read.table(paste("yob",year,".txt", sep = 
     ""),header = FALSE, 
    sep = ",", col.names = c("Name","Sex","Count"))
    cnames$year <- year
      }
     else
    {
    cnames <- lapply(1910:2013, baby.names)
    ldply(cnames)
    }    
    }
   yall <- baby.names()`
```

【问题讨论】:

  • 据我所知,函数中year 参数的默认值为“all”。但该函数仅在值不是“all”时设置工作目录。最重要的是,您已经在函数之外设置了目录。我建议在这个网站上搜索其他解决方案,有很多类似的问题都有很好的答案。
  • 这是作业,所以老师让我们把功能设置为all。然后运行它,使其运行所有年份。由于这是家庭作业,我必须将其保留在一个函数中以获得完整的学分,即使有更简单的方法可以做到这一点。
  • 但是你应该编写你的函数,这样无论year是否设置为"all",它都能正常工作。无论year是否设置为"all",工作目录都是一样的,所以至少把setwd()放在if()之前之前,而不是放在里面。
  • 对不起,我已经在原始代码上修复了这个问题,但粘贴了错误的版本

标签: r function if-statement paste read.table


【解决方案1】:

我找到了答案 我只需要添加回报。感谢大家的帮助!

library(plyr)
setwd("C:/Users/Sarah/Downloads/names-full-datasets/names-full-datasets")
baby.names <- function(year="all"){
  if(year!="all"){cnames <- read.table(paste("yob", year, ".txt", sep = ""), header = FALSE, sep = ",", col.names = c("Name","Sex","Count"))
cnames$year <- year 
return(cnames) 
  }
  else
  {
    cnames1 <- lapply(1910:2013, baby.names)
    ldply(cnames1)
  }

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多