将列表写入数据帧,然后写入csv但有2列

时间:2017-09-06 07:09:42

标签: r

我有一个列表“cluster_features”,这是它的样子:

> cluster_features[1:3]
$cluster1
           dui        control         physic     dui_physic physic_control        alcohol 
        281673          10759          10756          10756          10756           2917 

$cluster2
         investig              auto     investig_auto             death    death_investig          non-crim 
            41964             17445             17445              2815              2815               920 
investig_non-crim              fire     fire_investig 
              920               580               503 

$cluster3
         assist           agenc    agenc_assist    assist_other          public        motorist motorist_assist 
          98605           29118           18968           16655           16107           10261            8354 
           fire   assist_public          servic   public_assist            call         general  general_assist 
           7047            6952            6105            5679            5642            5630            5306 
    servic_call             cad     assist_fire          escort   assist_escort   escort_servic 
           5303            5259            4965            4954            4954            4954 

生成者:

dput(cluster_features[1:3])
structure(list(cluster1 = structure(c(281673, 10759, 10756, 10756, 
10756, 2917), .Names = c("dui", "control", "physic", "dui_physic", 
"physic_control", "alcohol")), cluster2 = structure(c(41964, 
17445, 17445, 2815, 2815, 920, 920, 580, 503), .Names = c("investig", 
"auto", "investig_auto", "death", "death_investig", "non-crim", 
"investig_non-crim", "fire", "fire_investig")), cluster3 = structure(c(98605, 
29118, 18968, 16655, 16107, 10261, 8354, 7047, 6952, 6105, 5679, 
5642, 5630, 5306, 5303, 5259, 4965, 4954, 4954, 4954), .Names = c("assist", 
"agenc", "agenc_assist", "assist_other", "public", "motorist", 
"motorist_assist", "fire", "assist_public", "servic", "public_assist", 
"call", "general", "general_assist", "servic_call", "cad", "assist_fire", 
"escort", "assist_escort", "escort_servic"))), .Names = c("cluster1", 
"cluster2", "cluster3"))

我的目标是使用类似格式的数据导出到csv。也就是说,也许columnA是键,然后列b键的所有值。所以看起来像是这个: enter image description here

我试过了:

x <- do.call("rbind", lapply(cluster_features, as.data.frame))

但结果将所有内容都放在一列中,如下所示:

head(x)
                        X[[i]]
cluster1.dui            281673
cluster1.control         10759
cluster1.physic          10756
cluster1.dui_physic      10756
cluster1.physic_control  10756
cluster1.alcohol          2917

有没有办法以屏幕截图的格式将我的列表导出为csv?一列中的键,另一列中的值?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你有一个命名向量列表,&amp;您希望将每个向量转换为名称和列表的2列数据框。值。试试这个:

result <- lapply(seq_along(cluster_features), 
                 function(i){data.frame(source = paste0("cluster", i), 
                                        key = names(cf[[i]]), 
                                        value = cf[[i]])}) %>%
  data.table::rbindlist()

> head(result)
     source            key  value
1: cluster1            dui 281673
2: cluster1        control  10759
3: cluster1         physic  10756
4: cluster1     dui_physic  10756
5: cluster1 physic_control  10756
6: cluster1        alcohol   2917

如果您不需要区分来源,可以跳过数据框中的第一列。