我是R的新手,我想知道是否有办法通过列表创建数据帧。这是一个例子。
n = c(1,4,5)
b = c(7,19,20)
v = c(3,8,9,4,5)
x = list(n,b,v)
如果我使用命令x i get columns。如果他们有类似的标题(如员工,计数,ID,行号,页面,页面访问)并创建这样的数据框,我可以将它们组合成行吗?
employee | count | id |row number| pages| page visits
1 4 5
7 19 20
3 8 9 4 5
答案 0 :(得分:4)
您可以在" stringi"中尝试stri_list2matrix
包:
library(stringi)
stri_list2matrix(x, byrow = TRUE)
# [,1] [,2] [,3] [,4] [,5]
# [1,] "1" "4" "5" NA NA
# [2,] "7" "19" "20" NA NA
# [3,] "3" "8" "9" "4" "5"
但是,您的示例数据只有5列,您希望创建一个包含6列的data.frame
。
您也可以尝试{" splitstackshape"}中的listCol_w
包:
library(splitstackshape)
listCol_w(data.table(id = seq_along(x), x), "x", fill = NA_real_)
id x_fl_1 x_fl_2 x_fl_3 x_fl_4 x_fl_5
1: 1 1 4 5 NA NA
2: 2 7 19 20 NA NA
3: 3 3 8 9 4 5
NA_real_
是结果可以保留为数字。 (NA_integer_
也适用于此。)
答案 1 :(得分:0)
require(plyr)
Reduce(function(z,y) rbind.fill(z,
setNames( data.frame(as.list(y)), cnams[1:length(y )])),
x,
init=setNames(data.frame(as.list(cnams))[0,], cnams) )
employee count id row_number pages page_visits
1 1 4 5 <NA> <NA> <NA>
2 7 19 20 <NA> <NA> <NA>
3 3 8 9 4 5 <NA>