我的问题与引用分配和复制分配有关data.table.我想知道是否可以通过引用删除行,类似于
DT[ , someCol := NULL]
Run Code Online (Sandbox Code Playgroud)
我想知道
DT[someRow := NULL, ]
Run Code Online (Sandbox Code Playgroud)
我想有一个很好的理由说明为什么这个功能不存在,所以也许你可以指出一个很好的替代通常的复制方法,如下所示.特别是,从我的例子(data.table)开始,
DT = data.table(x = rep(c("a", "b", "c"), each = 3), y = c(1, 3, 6), v = 1:9)
# x y v
# [1,] a 1 1
# [2,] a 3 2
# [3,] a 6 3
# [4,] b 1 4
# [5,] b 3 5
# [6,] b 6 6
# [7,] c 1 7
# [8,] c 3 8
# [9,] c 6 …Run Code Online (Sandbox Code Playgroud) 如何使用通配符识别字符串?
我发现了glob2rx,但我不太明白如何使用它.我尝试使用以下代码来选择以单词开头的数据框行blue:
# make data frame
a <- data.frame( x = c('red','blue1','blue2', 'red2'))
# 1
result <- subset(a, x == glob2rx("blue*") )
# 2
test = ls(pattern = glob2rx("blue*"))
result2 <- subset(a, x == test )
# 3
result3 <- subset(a, x == pattern("blue*") )
Run Code Online (Sandbox Code Playgroud)
但是,这些都没有奏效.我不确定我是否应该使用不同的功能来尝试这样做.
我想要对数据表的某些行进行子集化.像这样:
# load data
data("mtcars")
# convert to data table
setDT(mtcars,keep.rownames = T)
# Subset data
mtcars <- mtcars[like(rn,"Mer"),] # or
mtcars <- mtcars[mpg > 20,]
Run Code Online (Sandbox Code Playgroud)
但是,我正在处理一个庞大的数据集,我想避免使用<-,这不是内存效率,因为它会复制数据.
它是否正确?是否可以在没有更新过滤后的数据<-?