2015-10-17 3 views
0

У меня есть список (xlist) пустых информационных кадров x0:x10. У меня также есть заполненный dataframe y (около 13 000 строк). Все кадры данных имеют количество столбцов и заголовков столбцов.Добавление строк в dataframes в список

y Date Time Correct Incorrect Average Score EC E1? E2? E3? 
[1] 10/1 1:14  8   2   15  80 0 y n y 
[2] 10/2 8:45  5   5   12  50 1 n y y 

Я пытаюсь скопировать каждую строку y в один из dataframes в xlist.

for (i in 1:nrow(y)) { 
    xlist(paste0("x",y[i,3])) <- rbind(xlist(paste0("x",y[i,3])), y[i,])) 
} 

В основном, на основе числа в «правильной» колонке, я хочу, чтобы скопировать эту строку в соответствующий dataframe в xlist (так что первый ряд к x8, второй x5).

Проблема со списком dataframes является то, что он не читает их как dataframes здесь

> class(xlist[x1]) 
[1] "list" 

но в панели окружения

xlist list of 11 
x0: 'data.frame' 0 obs of 10 variables: 
..$ etc 
x1: 'data.frame' 0 obs of 10 variables: 
..$ etc 
etc 

Использование кода копирования выше броски «количество заменяемые элементы не являются кратными длине замены ». Несколько переписаний получили «количество столбцов аргументов не совпадают» (не уверен, как). Так что я попытался создать свою собственную функцию AddRow, чтобы увидеть, если rbind был вопрос:

AddRow <- function(DF,NewRow) { 
    DF[nrow(DF) + 1] <- NewRow 
    DF 
} 

но он бросает «неправильные # индексов в матрице» ошибке.

Как я могу скопировать все строки y в соответствующие фреймы данных в пределах xlist?

ответ

0

Я не определил точный ответ, но придумал более эффективный метод обхода, поскольку после итерации мне больше не нужен список (а скорее фактические x самих данных). Я обнаружил пакет sqldf.

Не используя список фреймов, я получил список, в котором я нуждался.

for (i in 0:10) { 
    assign(paste0("x",i), 
      sqldf(paste0("select * from y where Correct = ", i))) 
} 

Это создает 11 dataframes, названный x0 через x10, и каждый из них autopopulated через запрос SQL.

+0

'split (y, y $ Correct)' разделит кадр данных 'y' на список фреймов данных, каждый с отдельным значением' Correct'. –

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