2014-02-19 2 views
0

Я думаю, мой вопрос в два разаОт списка до n векторов в R

У меня есть список из n кадров данных. Я хочу сделать n кадров данных b1, b2, b3 ... bn, чтобы я мог более легко получить доступ к данным для некоторых других функций.

Например, когда я использую hist(log(b[[1]]$var)) я получаю все виды ошибок,

но если вместо этого, я сначала сделать b1 = b[[1]], то hist(log(b1)) не дает мне никаких проблем.

  1. Как создать кадры п данных b1, b2 ... Ьп из моего списка п объектов И/ИЛИ
  2. Если я не могу сделать b1, b2 ... Ьп отдельных кадров данных, как бы я мог передать объекты через функции надежно в оригинальной форме b[[1]]?

ответ

0

отредактированная версия

Я думаю, что я неправильно понял вашу проблему.

б [[1]] $ вар должны не дать вам проблемы, если б [[1]] действительно data.frame.

Итак, я подозреваю, что элементы вашего списка b не являются data.frame (по крайней мере, один из них не должен быть).

Чтобы преобразовать объект в data.frame, используйте as.data.frame. Таким образом, чтобы исправить вашу проблему, это исправление необходимо сделать трюк:

for (i in seq_along(b)) { 
    b[[i]] <- as.data.frame(b[[i]]) 
} 
0
l <- list(df1=data.frame(a=1:5), df2=data.frame(a=6:10)) # example list 
names(l) <- paste0("b", 1:length(l)) # rename df's in list to b_n 
list2env(l, envir=globalenv()) # b1 and b2 are now directly addressable 
+0

А я уже переименованным весь список объектов для b1, b2 и т.д. ... так list2env (л, Envir = GlobalEnv()) как бы присоединяют их? Спасибо, люк. – user3330466

+0

@ user3330466 Посмотрите на '? List2env'. Он помещает все (названные) компоненты списка как объекты в глобальную среду, которая содержит кадры данных, функции и т. Д., С которыми вы можете получить доступ повсюду. – lukeA

Смежные вопросы