我刚开始导入.json文件以供在R中使用,我正在尝试创建一个'long‘格式的数据格式--每一行都是一个参与者,每一列都是一个变量。我的大多数数据集在调用fromJSON之后都是兼容的,但是一个嵌套的json结构会导致一个粗糙的列表,每个参与者都有一个Null、1、2或3个条目(理论上可以有更多)。
示例:
testdf <- fromJSON("[[\"MMM\",\"AAA\"],null,[\"GGG\",\"CCC\",\"NNN \"],null,null,[\"AAA\",\"NNN \"],null,[\"MMM\",\"AAA\"],null,null,null,null,[\"MMM\",\"AAA\"],[\"CCC\",\"AAA\"],\"NNN \",[\"MMM\",\"NNN \",\"EEE\"],null,null,[\"CCC\",\"MMM\",\"AAA\"],[\"HHH\",\"AAA\"],\"AAA\",[\"MMM\",\"AAA\",\"NNN \"],[\"CCC\",\"AAA\"],[\"MMM\",\"AAA\",\"NNN \"],[\"AAA\",\"NNN \"],[\"MMM\",\"AAA\"],null,null,null,null,null,null]", flatten=TRUE)如何将此列表转换为保留空值的32×n数据帧?
取消列表上的变体会删除空值;当然,rbind.fill会将条目移到下一行--像cbind.fill这样的东西能起作用吗?(cbind a df with an empty df (cbind.fill?))隐藏在plyr中的东西?
谢谢你的建议。
发布于 2014-07-16 01:58:39
相当简单:
t(sapply(testdf, function(x) {
if (is.null(x)) x <- NA_character_
length(x) <- 3
x })
)如果要自动选择列数,则需要先计算该列数:
nc <- max(sapply(testdf, length))
t(sapply(testdf, function(x) {
if (is.null(x)) x <- NA_character_
length(x) <- nc
x })
)https://stackoverflow.com/questions/24770015
复制相似问题