【问题标题】:as.data.frame() no column names (R) [duplicate]as.data.frame() 没有列名 (R) [重复]
【发布时间】: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”的。

标签: r dataframe


【解决方案1】:

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))

df1 <- data.frame(setNames(result, c("speed", "distance", "degrees")))

head(df1)
#   speed distance degrees
# 1    NA       NA      NA
# 2   104      381      38
# 3    67       NA      NA
# 4    NA       NA      NA
# 5   107      412      NA
# 6    71       NA      NA

【讨论】:

    【解决方案2】:

    as.data.frame 帮助中,似乎该函数在应用于矩阵时不使用col.names 参数。如果您使用result(原始列表)而不是do.call(cbind, result),您将获得列名。

    【讨论】:

      猜你喜欢
      • 2018-08-08
      • 2015-04-15
      • 2018-04-25
      • 2016-05-14
      • 2013-10-31
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2021-04-19
      相关资源
      最近更新 更多