【问题标题】:R Data table setkey - error some columns are not in the data.tableR数据表setkey-错误某些列不在data.table中
【发布时间】:2014-05-05 11:27:21
【问题描述】:

我想将 data.table setkey 与预定义列表 idcategories 一起使用,但收到错误消息:

> setkey(tr_id_cat_dt, id, categories)
Error in setkeyv(x, cols, verbose = verbose) : 
  some columns are not in the data.table: categories

我希望idcategories 的所有元素都显示为键。

这可能吗?


id 和 categorie 是值的列表,例如:

categories = c(9115L, 9909L, 3203L, 5558L, 4401L, 1703L, 1726L, 3504L, 3509L, 
5122L, 5616L, 5619L, 2202L, 2119L, 6202L, 5824L, 799L, 4517L, 
7205L, 706L)


dput(head(tr_id_cat_dt))
structure(list(id = c(86246, 86246, 86246, 86246, 86246, 86246
    ), category = c(706L, 706L, 706L, 706L, 706L, 706L)), .Names = c("id", 
    "category"), sorted = c("id", "category"), class = c("data.table", 
    "data.frame"), row.names = c(NA, -6L), .internal.selfref = <pointer: 0x015424a0>)

【问题讨论】:

  • setkey(tr_id_cat_dt, c("id", "categories")) 会起作用吗?或setkeyv(tr_id_cat_dt, c("id", "categories"))
  • id 和 categories 实际上是值列表。我添加了一些细节。
  • 显示dput(head(tr_id_cat_dt))categories 是 data.table 中的列吗?
  • dput输出的结构体:你的categories列其实叫category
  • 只能使用data.table的一列作为key。

标签: r data.table


【解决方案1】:

您只能在data.table 的列上使用setkey(正如@Roland 已经指出的那样)。

require(data.table)
DT = data.table(x = 1:2, y=3:4)
z = 5:6
setkey(DT, x) # works
setkey(DT, z) # doesn't
# Error in setkeyv(x, cols, verbose = verbose, physical = physical) : 
#   some columns are not in the data.table: z

setkey(DT[, z := z], z) # works

HTH

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-10-04
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-22
    • 2014-01-30
    相关资源
    最近更新 更多