Mar*_*kes 6 r dataframe data.table
我有以下示例:
irisDT <- as.data.table(iris)
mod <- function(dat) {
dat[, index:=(1:nrow(dat))]
setkey(dat, index)
dat <- dat[2:10]
dat[, index:=NULL]
invisible()
}
mod(irisDT)
names(irisDT) # it contains index
Run Code Online (Sandbox Code Playgroud)
令我惊讶的是,在调用mod()
函数后索引列仍然存在.删除该行时不是这种情况dat <- dat[2:10].我想,由于行无法通过引用删除,因此创建了另一个data.table.但是,我想删除原始data.table中的索引列.
好问题. data.table 被复制的电平变化,通过<-以通常方式ř.
它不被复制电平变化由:=或set*功能(setkey,setnames,setattr由提供)data.table包.
因此data.table,决定副本的对象本身并没有什么特别之处,并且它作为参数传递给函数的方式完全相同data.frame.这就是你在重要功能中所做的事情.该<-运营商副本上变化并在使用时是没有不同的data.table.的:=操作者,在另一方面,通过参考分配.
正如您所说,还没有办法通过引用删除行,因此在此之前您需要使用标准R语法将副本分配回调用范围中的符号.
事实上,在昨晚的伦敦演讲中有一张幻灯片,现在在演示文稿部分的主页上(见带标题的幻灯片copy()).
| 归档时间: |
|
| 查看次数: |
501 次 |
| 最近记录: |