2014-12-07 4 views
0

Я создал серию кадров данных, которые упорядочены в последовательности (например, df1, df2, df3, df4 ...). Я вытащил эти данные кадры вместе в список (ldf) и теперь хотел бы создать переменную (z), который показывает номер, связанный с каждым кадром данных, например, что переменная z для элемента df1 в ldf будет равно 1, в то время как z = 2 для df2 в ldf.R - Создать переменную в список фреймов данных на основе последовательности

В действительности у меня есть несколько тысяч кадров данных, но в качестве примера, я соединял следующий код для создания фреймов данных и завернуть их в список:

for (i in 1:4) { 
    assign(paste0('df', i), data.frame(x = rep(1:100), 
            y = seq(from = 1, 
              to = 1000, 
              length = 100))) 
} 

ldf <- list(df1, df2, df3, df4) 

заимствования немного коды от другого thread, я попытался создать переменную z с:

ldf <- lapply(ldf, function(x) { 
    x$z = seq(1:4) 
    return(x) 
}) 

Не удивительно, что это только петли 1-4 раз более 100 наблюдений в каждом кадре данных, а не назначая 1 для df1, 2 для df2, 3 для df3 и 4 для df4 (как я желаю).

Если кто-нибудь, кто знаком со списками, может помочь мне разобраться в этом, я был бы очень благодарен.

ответ

2

Если вы хотите итерации по двум спискам/векторам одновременно, вы можете использовать mapply() или Map. Вот код с использованием последних

Map(function(x,z) cbind(x,z=z), ldf, 1:4) 
0

Высылает ли это запрос?

ldf$z <- seq_along(ldf) 
Смежные вопросы