我想了解data.table的做事方式。我试图列出一些从data.table中提取子集的不同方法。我的目的是学习语法。
DT <- data.table(x1=c("b","c", "a", "b", "a", "b"), x2a=as.character(1:6),m1=seq(10,60,by=10),m2=1:6)
#### Method 1
DT[x1 == 'a'& x2a == '3',1:3, with=FALSE]
x1 x2a m1
1: a 3 30
#### Method 2
subset(DT,x1 == 'a' & x2a == '3',select = 1:3)
x1 x2a m1
1: a 3 30
#### Method 3
setkey(DT,x1,x2a)
DT[.('a','3')]
x1 x2a m1 m2
1: a 3 30 3
#### Method 4 - No keys set
DT[,.(x1='a',x2a='3')] # how do I get all the columns?
x1 x2a
1: a 3
DT[,.(x1='a',x2a='3'),.SD,.SDcols=1:3] #error message
DT[,.(x1='a',x2a='3'),lapply(.SD),.SDcols=1:3] # what function should I give just to get the rows?
Error in match.fun(FUN) : argument "FUN" is missing, with no default
#### Method 5 - No keys set
DT[.('a','3'),by=.(x1,x2a)] # Should this not be the same as key setting?
DT[.('a','3'),by=.('x1','x2a')] # Should there be quotes on x1 and x2a? When?
DT[.('a','3'),keyby=.('x1','x2a')] # When and where should keyby be used? Nice to see an example
方法1到3工作正常。但我想帮助方法4和5。
我想从方法4和5得到相同的结果,从1到3.我如何使用方法4并使用.SD&amp; .SDcols?