Я хочу преобразовать список в фрейм данных со следующим кодом:
ls<-list(a=c(1:4),b=c(3:6))
do.call("rbind",ls)
Результат, полученный путем добавления do.call, показан ниже. Он возвращает объект data.frame
по желанию.
do.call("rbind",ls)
[,1] [,2] [,3] [,4]
a 1 2 3 4
b 3 4 5 6
Однако, если я напрямую использую rbind
, он возвращает список.
Почему rbind
ведет себя по-разному в этих двух ситуациях?
my.df<-rbind(ls)
str(ls)
my.df
a b
ls Integer,4 Integer,4
str(ls)
List of 2
$ a: int [1:4] 1 2 3 4
$ b: int [1:4] 3 4 5 6
do.call("rbind", ls)
возвращает матрицу, а не фрейм данных. То же самое сrbind(ls)
. - person Rich Scriven   schedule 29.01.2016do.call
извлекает элементы из списка, в этом разница. Как будто вы бы сделалиrbind(ls[[1]], ls[[2]])
- person David Arenburg   schedule 29.01.2016rbind(ls)
по-прежнему является списком. На самом деле я хочу преобразовать список в матрицу - person eclo.qh   schedule 29.01.2016rbind(ls)
— это матрица. Он содержит элементы списка. См.class(rbind(ls))
- person Rich Scriven   schedule 29.01.2016> str(ls)
, он говорит, что это список. Хотя обе функции do.call(rbind, ls) и rbind(ls) возвращают матрицу, их результаты различны. - person eclo.qh   schedule 29.01.2016?do.call
- person Alex W   schedule 29.01.2016