將列表轉換為向量,同時保留空列表元素

當希望將列表轉換為向量或 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