【问题标题】:Can't add value to an empty data table无法向空数据表添加值
【发布时间】:2018-03-26 04:01:13
【问题描述】:
我创建了一个空数据表dt,其中包含id、begin 和end 列。
library(data.table)
dt <- data.table(id=numeric(), begin=numeric(),end=numeric())
我尝试将值 1 添加到列 id 的第一行。
dt$id[1] <- 1
但它的值仍然是NA。不知道怎么回事。
dt$id[1]
# [1] NA
【问题讨论】:
标签:
r
dataframe
datatable
【解决方案1】:
选项 1: 使用 rbind()。这默认为rbindlist(),它允许我们使用fill = TRUE。在我们只想为一个变量添加多个值的情况下,它具有简单的优点。
rbind(dt, list(id = 1), fill = TRUE)
# id begin end
# 1: 1 NA NA
rbind(dt, list(id = 1:4), fill = TRUE)
# id begin end
# 1: 1 NA NA
# 2: 2 NA NA
# 3: 3 NA NA
# 4: 4 NA NA
选项 2: 使用 dt[1] 创建一行 NA,然后将 1 分配给 id。这里的问题是我们还必须命名其他列。如果我们有很多列,这可能没有用。
dt[1, .(id = 1, begin, end)]
# id begin end
# 1: 1 NA NA
【解决方案2】:
您可以使用:rbind(dt, list(1, NA, NA))