R: Как добраться до фрейма данных, который хранится в векторе? - PullRequest
0 голосов
/ 22 марта 2020

У меня есть 20 CSV-файлов, которые мне нужно загрузить, я сделал в oop, а затем я добавил каждый data.frame в вектор. Наконец, в векторе "list_df" у меня есть 20 элементов, в которых я сохранил имя своих 20 кадров данных.

Теперь я пытаюсь добраться до тех дат, хранящихся в файле list_df, но он не работает. Любые идеи, как я могу получить те кадры данных, хранящиеся в векторе, чтобы сделать дальнейшие вычисления?

list_df[1][column_name] 

или

list_df[1]$column_name

не работает

path<-'thats my path'

list_of_files<-list.files(path) 

list_df<-c() #creating empty vector
for (i in 1:length(list_of_files)){
  assign(paste("dffile",list_of_files[i],sep=""),(read.table(paste(path,list_of_files[i],sep=""), sep=",", header=TRUE)))
  list_df[i]<-paste("dffile",list_of_files[i],sep="")
}

Ответы [ 2 ]

1 голос
/ 22 марта 2020

Мы можем инициализировать list_df как символьный вектор

list_df <- character(length(list_of_files))

Теперь должно работать назначение на основе индекса.


Поскольку list_df содержит имена объектов в виде строка, если нам нужно получить значения этих элементов, используйте get (для одного объекта) или mget (для всех объектов в списке)

get(list_df[1])
mget(list_df)
0 голосов
/ 22 марта 2020

Я использовал ваши советы с lapply, это выглядит действительно лучше:

funct_test<-function(variable)
  {
   path<-'C:/Users/ppachlinski/Documents/lekcja1_12c/smog_krakow/'
  my_data <- list.files(path)
  list_df <- lapply(my_data, read.table, sep = ",", header = TRUE)
  ?lapply
  mylist <- lapply(sciezka, read.table, header = TRUE, sep = ',') 

  mean(mylist[[1]]$variable, na.rm=TRUE)
  }

Но я сталкиваюсь с проблемой при использовании этой функции: funct_test ("X169_pressure")

Я получаю сообщение об ошибке: В mean.default (mylist [[1]] $ variable, na.rm = TRUE): аргумент не числовой c или логический: возвращение NA

...