Программирование R — попытка прочитать файлы в каталоге с помощью функции

#r #csv

#r #csv

Вопрос:

Я пишу программу R для чтения нескольких файлов csv один за другим с помощью функций. Это работает, если я даю read.csv команду только в этом рабочем каталоге, но это никогда не сработает, если я передам имя файла в качестве параметра.

Например

 dat <- function (x)  
 {     
awr <- data.table(read.csv(x))
  }
  

Я прошел

 dat("raja.csv")
  

К сожалению, он не выдает никаких ошибок, и набор данных awr не создается.

Если я дам

 awr <- data.table(read.csv("raja.csv")) ..it works...
  

Я не могу понять, почему он не работает при передаче в функцию.
Я проверил рабочий каталог с помощью getwd() . это то же самое…

Ответ №1:

Вы ничего не возвращаете из своей функции. Это должно сделать это:

 dat <- function (x) data.table(read.csv(x)) 
  

Первоначально вы присваивали содержимое файла awr , но не возвращали awr .

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

1. это не имеет значения. запустите это tmp <- function(x) y <- x; (var <- tmp(5))

2. Да, но в исходном примере результату функции ничего не присваивается. dat("raja.csv") не будет ничего печатать, пока я не изменю функцию. Если бы плакат сделал x <- dat("raja.csv") это, все было бы по-другому.

3. @rawr Но если вы просто запустите dat("raja.csv") , результат будет возвращен незаметно, поэтому не похоже, что что-то произошло. Хотя .Last.value должно быть содержимое.

4. В итоге @user3745215 ваша функция, вероятно, работает так, как ожидалось. Просто, когда вы предварительно просматриваете его, набирая dat("raja.csv") , результаты не выводятся на вашу консоль. Однако, если вы должны были присвоить результаты этой функции переменной, она должна работать так, как вы хотите. В целом, я бы рекомендовал использовать решение, которое я опубликовал, которое более четко указано в том, что будет возвращено.

5. итак, мы все трое согласны с тем, что ваш ответ не имеет значения и не затрагивает вопрос. прохладный