R语言中如何将含NA的列表正确转换为带列名的数据框?
解决列表转指定列名数据框的问题
我来帮你搞定这个问题~你的代码问题出在as.data.frame的参数使用上,col.names并不是这个函数的有效参数(或者说你用错了设置位置),而且直接用do.call(cbind, result)转数据框后,需要正确的方式指定列名。这里有两种简单可靠的解决方法:
方法一:先合并再命名
先通过cbind把列表里的向量按列合并成矩阵,转成数据框后再单独设置列名:
result <- list(c(NA, 104, 67, NA, 107, 71, 94, NA, NA, 64), c(NA, 381, NA, NA, 412, NA, 287, NA, NA, NA), c(NA, 38, NA, NA, NA, NA, NA, NA, NA, NA)) # 先合并为数据框,再设置列名 df <- as.data.frame(do.call(cbind, result), stringsAsFactors = FALSE) colnames(df) <- c('speed', 'distance', 'degrees')
方法二:直接用data.frame构造
更直观的方式是直接把列表中的每个元素作为data.frame的列,同时指定列名:
df <- data.frame( speed = result[[1]], distance = result[[2]], degrees = result[[3]], stringsAsFactors = FALSE )
这两种方法都能得到你想要的结果:一个包含speed、distance、degrees三列的数据框,原列表中的NA值也会被正确保留。
内容的提问来源于stack exchange,提问作者Jan
相关产品推荐
相关产品推荐

