将列表转换为向量,同时保留空列表元素

当希望将列表转换为向量或 data.frame 对象时,通常会删除空元素。

这可能是有问题的,其中创建具有一些空值的所需长度的列表(例如,创建具有 n 个元素的列表以添加到 mxn 矩阵,data.frame 或 data.table)。可以无损地将列表转换为向量,但保留空元素:

res <- list(character(0), c("Luzhuang", "Laisu", "Peihui"), character(0), 
    c("Anjiangping", "Xinzhai", "Yongfeng"), character(0), character(0), 
    c("Puji", "Gaotun", "Banjingcun"), character(0), character(0), 
    character(0))
res
[[1]]
`character(0)`

[[2]]
[1] "Luzhuang" "Laisu"    "Peihui"  

[[3]]
`character(0)`

[[4]]
[1] "Anjiangping" "Xinzhai"     "Yongfeng"   

[[5]]
`character(0)`

[[6]]
`character(0)`

[[7]]
[1] "Puji"       "Gaotun"     "Banjingcun"

[[8]]
`character(0)`

[[9]]
`character(0)`

[[10]]
`character(0)`
res <- sapply(res, function(s) if (length(s) == 0) NA_character_ else paste(s, collapse = " "))
res
 [1] NA                             "Luzhuang Laisu Peihui"        NA                             "Anjiangping Xinzhai Yongfeng" NA      

 [6] NA                             "Puji Gaotun Banjingcun"       NA                             NA                             NA