【发布时间】:2018-04-06 07:31:16
【问题描述】:
假设我有以下列表:
result
[[1]]
[1] NA 104 67 NA 107 71 94 NA NA 64
[[2]]
[1] NA 381 NA NA 412 NA 287 NA NA NA
[[3]]
[1] NA 38 NA NA NA NA NA NA NA NA
dput():
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))
现在我想将此列表转换为
dataframe:
df <- as.data.frame(do.call(cbind, result),
stringsAsFactors = FALSE,
col.names = c('speed', 'distance', 'degrees'))
不幸的是,这不包括输出中的列名(为什么?):
df
V1 V2 V3
1 NA NA NA
2 104 381 38
3 67 NA NA
4 NA NA NA
5 107 412 NA
6 71 NA NA
7 94 287 NA
8 NA NA NA
9 NA NA NA
10 64 NA NA
【问题讨论】:
-
来自
as.data.frame帮助,在使用矩阵类时似乎没有使用col.names参数。如果你使用result(一个列表)而不是do.call(cbind, result),你会得到列名。 -
试试
setNames(as.data.frame(result,stringsAsFactors=FALSE),c('speed', 'distance', 'degrees'))。或者只是as.data.frame(result,stringsAsFactors=FALSE,col.names=c('speed', 'distance', 'degrees'))。 -
@nicola:谢谢。我知道如何设置名称(
colnames()等),但问题仍然是为什么无法识别参数? -
完成。为什么会这样,我真的不知道。
-
我不认为这是重复的。这篇文章是关于“list to data.frame”的,目标帖子是关于“matrix to data.frame”的。