作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
似乎可以在原位添加/删除一列到 data.table
,即,而无需将的所有其他列复制到新表中。
可以用 Vanilla data.frame
做到这一点吗?
PS。我知道如何“功能上”添加/删除列,即创建新框架而不修改原始框架。
最佳答案
您可以通过引用data.frame
从data.table::set
删除或修改现有列。我怀疑您可以添加列而不进行复制。您可以在不创建副本的情况下将列添加到data.table
的原因是data.table
过度分配了内存。有关更多信息,请参见 ?alloc.col
。
R> library(data.table)
R> data(mtcars)
R> tracemem(mtcars)
[1] "<0x59fef68>"
R> set(mtcars, j="mpg", value=NULL) # remove a column
R> set(mtcars, j="cyl", value=rep(42, 32)) # modify a column
R> untracemem(mtcars)
R> str(mtcars)
'data.frame': 32 obs. of 10 variables:
$ cyl : num 42 42 42 42 42 42 42 42 42 42 ...
$ disp: num 160 160 108 258 360 ...
$ hp : num 110 110 93 110 175 105 245 62 95 123 ...
$ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
$ wt : num 2.62 2.88 2.32 3.21 3.44 ...
$ qsec: num 16.5 17 18.6 19.4 17 ...
$ vs : num 0 0 1 1 0 1 0 1 1 1 ...
$ am : num 1 1 1 0 0 0 0 0 0 0 ...
$ gear: num 4 4 4 3 3 3 3 4 4 4 ...
$ carb: num 4 4 1 1 2 1 4 2 2 4 ...
R> data(mtcars)
R> tracemem(mtcars)
[1] "<0x6b3ec30>"
R> mtcars[, "mpg"] <- NULL
tracemem[0x6b3ec30 -> 0x84de0c8]:
tracemem[0x84de0c8 -> 0x84de410]: [<-.data.frame [<-
tracemem[0x84de410 -> 0x84de6b0]: [<-.data.frame [<-
R> tracemem(mtcars)
[1] "<0x84dca30>"
R> mtcars[, "cyl"] <- rep(42, 32)
tracemem[0x84dca30 -> 0x84dcc28]:
tracemem[0x84dcc28 -> 0x84dd018]: [<-.data.frame [<-
tracemem[0x84dd018 -> 0x84dff70]: [<-.data.frame [<-
R> untracemem(mtcars)
R> data(mtcars)
关于r - 是否可以就地(破坏性地)修改data.frame?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17891519/
我正试图让这个 map 功能成为一个更具破坏性的版本。这意味着 map 函数会修改原始数组而不是新数组。 function map (array, callback) { var result =
破坏性 Lisp 函数名称中的“N”缩写是什么词? 最佳答案 这是一个直接的答案from Linearity的 link : The N stands for non-consing, meaning
这是带有数据绑定(bind)元素的 html: div data-bind="foreach: clientRequests" id="test2">
我是一名优秀的程序员,十分优秀!