【问题标题】:creating, directly, data.tables with column names from variables, and using variables for column names with := [duplicate]直接创建带有变量列名的data.tables,并使用变量作为列名:= [重复]
【发布时间】:2019-10-30 08:25:04
【问题描述】:

到目前为止,我知道的唯一方法是分两步:使用虚拟名称创建列,然后使用 setnames()。我想一步完成,可能有一些参数/选项,但找不到它

# the awkward way I have found so far
col_names <- c("one", "two","three")
dt <- data.table()
# add columns with dummy names...
setnames(dt, col_names )

还对能够通过 := 使用变量的方法感兴趣,例如

colNameVar <- "dummy_values"
DT[ , colNameVar := 1:10]

对我来说,这个问题似乎与Select / assign to data.table when variable names are stored in a character vector 不重复 在这里我问一下创建data.table时,标题中的单词“creating”。 这与已经创建数据表时完全不同,这是问题的主题,表示为重复,对于后者,有明确记录的已知方法,在我在这里询问的情况下不起作用。

PS。请注意@Ronak Shah 在评论中指出的类似问题:Create empty data frame with column names by assigning a string vector?

【问题讨论】:

  • 这似乎与“我的”方式相同,我希望可以改进。像我一样,他们创建数据结构,然后在第二步中为其分配名称。我希望有一种方法可以一步完成所有事情,尽管我找不到。
  • 我的意思是它最后有一个单行代码,即setNames(data.table(matrix(ncol = 3, nrow = 0)), col_names)
  • 是的,谢谢,但我正在寻找类似 ..colNameVar 或 with = F 之类的东西,一旦你有了 DT,你就可以做到。
  • 来自链接的答案“要分配给变量,请将 := 的 LHS 括在括号中:”

标签: r data.table


【解决方案1】:

对于第一个问题,我不确定,但您可能想尝试看看fread 是否有助于创建一个带有命名列的空 data.table。

至于第二个问题,试试

DT[, c(nameOfCols) := 10]

其中nameOfCols 是带有您要修改的列名称的向量。见?data.table

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 2013-04-27
    • 2017-10-23
    相关资源
    最近更新 更多