2016-11-25 2 views
-2

Примера объясняет лучшее, что мне нужно сделать:В R: возвращение кадра данных от применения итеративно построения data.frame

# dd is a list and has some vars 
dd = list() 
dd$var = "some data is in here" 

# now I want to add a sub data frame $new 
dd$new = apply(as.array(seq(1,5)), 1, function(x){ 

    return(data.frame(
    a = x, 
    b = x * 2 
)) 

}) 

str(dd) 

# desired structure ####################### 

#List of 2 
# $ var: chr "some data is in here" 
# $ new:List of 2 
# ..$ a: num [1:5] 1 2 3 4 5 
# ..$ b: num [1:5] 2 4 6 8 10 

#### Note: this is NOT what str(dd) actually gives, but what I want dd to look like! 

Как я могу добиться этого?

EDIT

на основе ответа помечается как правильно я мог решить:

# dd is a list and has some vars 
dd = list() 
dd$var = "some data is in here" 

# now I want to add a sub data frame $new 
ret = apply(as.array(seq(1,5)), 1, function(x){ 

    return(data.frame(
    a = x, 
    b = x * 2 
)) 

})  

dd$new = as.list(do.call(rbind, ret)) 

str(dd) 
#List of 2 
# $ var: chr "some data is in here" 
# $ new:List of 2 
# ..$ a: int [1:5] 1 2 3 4 5 
# ..$ b: num [1:5] 2 4 6 8 10 

Также

нет никаких причин, чтобы downvote мой вопрос. Проблема изложена в комментариях к коду. Код является минимальным рабочим примером. Я сказал желаемый ответ. Если вы не удосужились прочитать код, ну, по крайней мере, не уменьшайте его!

ответ

2

Мы можем попробовать

res <- setNames(list(dd[[1]], as.list(do.call(rbind, dd$new))), names(dd)) 
+0

Это привело меня к работе ... Спасибо – agoldev

0

Это дает такое же сообщение, как вы указали.

dd = list() 
dd$var = "some data is in here" 

dd$new <- list(a = 1:5, b = (1:5)*2) 
str(dd) 
+0

Конечно. Но материал в приложении FUN делает что-то более сложное, как показано в минимальном примере. – agoldev

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