R:data.table,将组的第一个和最后一个值设置为NA

NoB*_*own 8 r data.table

我想将组中的第一个和最后一个值设置为NA.这是一个例子:

DT <- data.table(v = rnorm(12), class=rep(1:3, each=4))
DT[, v[c(1,.N)] := NA , by=class]
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我该怎么做?

Aru*_*run 10

目前,解决这个问题的方法是首先提取索引,然后通过引用进行一次分配.

idx = DT[, .(idx = .I[c(1L, .N)]), by=class]$idx
DT[idx, v := NA]
Run Code Online (Sandbox Code Playgroud)

我将尝试将此示例添加到Reference语义插图中.

  • @Frank,如果你一遍又一遍地这样做,是的,`set()`会更快,因为它没有`[.data.table`的开销。这里应该没关系。 (2认同)