首页 > 解决方案 > data.table“超出范围”,如何为新行添加值

问题描述

在使用 data.frame 时,使用行号插入新值很简单;

df1 <- data.frame(c(1:3))    
df1[4,1] <- 1

> df1
  c.1.3.
1      1
2      2
3      3
4      1

它不适用于 data.table;

df1 <- data.table(c(1:3))
df1[4,1] <- 1
Error in `[<-.data.table`(`*tmp*`, 4, 1, value = 1) : i[1] is 4 which is out of range [1,nrow=3].

我该怎么做?

标签: rdata.table

解决方案


数据表被设计成可以更快地处理一些常见的操作,如子集、连接、分组、排序等,因此与 data.frames 有一些差异。您指出的某些操作不适用于data.tables。您需要使用 data.table - 特定的操作。

dt1 <- data.table(c(1:3))
rbindlist(list(dt1, list(1)), use.names=FALSE)
dt1

#    V1
# 1:  1
# 2:  2
# 3:  3
# 4:  1

推荐阅读