将列表组合为行

时间:2014-11-18 19:19:41

标签: r dataframe

我是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         

2 个答案:

答案 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>