我有一个 data.table 并想在一行的每个子集上应用一个函数。通常一个人会这样做:DT[, lapply(.SD, function), by = y]
但在我的情况下,该函数不返回原子向量,而只是返回一个向量。有机会做这样的事情吗?
library(data.table)
set.seed(9)
DT <- data.table(x1=letters[sample(x=2L,size=6,replace=TRUE)],
x2=letters[sample(x=2L,size=6,replace=TRUE)],
y=rep(1:2,3), key="y")
DT
# x1 x2 y
#1: a a 1
#2: a b 1
#3: a a 1
#4: a a 2
#5: a b 2
#6: a a 2
DT[, lapply(.SD, table), by = y]
# Desired Result, something like this:
# x1_a x2_a x2_b
# 3 2 1
# 3 2 1
在此先感谢,另外:我不介意函数的结果是否必须具有固定长度。