【问题标题】:data.table "out of range", how to add value to new rowdata.table“超出范围”,如何为新行添加值
【发布时间】:2018-05-06 21:21:59
【问题描述】:

在使用 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].

我该怎么做?

【问题讨论】:

  • rbind(df1, data.table(c(1)))?
  • 您可以使用setDF。像setDF(df1)[4,1] &lt;- 1 这样的东西。完成后,将其更改回 data.table 为setDT(df1)`

标签: r data.table


【解决方案1】:

数据表被设计成可以更快地处理一些常见的操作,如子集、连接、分组、排序等,因此与 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
猜你喜欢
  • 2022-10-14
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 2021-05-06
  • 2011-08-02
  • 2013-05-10
  • 2016-09-24
  • 1970-01-01
相关资源
最近更新 更多