Как читать из нескольких файлов в папке, используя вставку в R

#r #function #if-statement #paste #read.table

#r #функция #if-оператор #вставить #read.table

Вопрос:

Функция вроде как запускается. Он выводит список лет вместо чтения в 104 файлах на моем компьютере. Я также попытался настроить knitr и код, приведенный ниже в комментариях. Я открыт для идей о внутренней части функции (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()`
```
  

Комментарии:

1. Насколько я могу судить, значение year аргумента по умолчанию в вашей функции равно «all». Но функция устанавливает рабочий каталог только в том случае, если значение не равно «all». Кроме того, вы уже установили каталог вне функции. Я бы посоветовал поискать на этом сайте другие решения, есть много похожих вопросов с хорошими ответами.

2. Это для домашнего задания, поэтому мой учитель попросил нас установить для функции значение all. Затем запустите ее так, чтобы она выполнялась все годы. Поскольку это домашнее задание, я должен сохранить его в функции с целью получения полной оценки, хотя есть более простые способы сделать это.

3.Но вы должны написать свою функцию так, чтобы она работала независимо от того, year установлено "all" значение или нет. Рабочий каталог остается неизменным, независимо от того, year установлено "all" значение setwd() или нет, поэтому, по крайней мере, ставьте перед if() , а не внутри него.

4. Извините, я исправил это в исходном коде, но вставил неправильную версию

Ответ №1:

Я смог найти ответ, мне просто нужно было добавить return. Спасибо за всю помощь!

 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)
  }

}