将列表转换为向量,同时保留空列表元素
当希望将列表转换为向量或 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