1
我想創建一個函數,將新列插入數據表中,並將列表中每個變量的計數作爲參數給出。創建一個函數來遍歷數據表變量並添加計數
這裏是一個工作的代碼,但它不是一個函數:
a = data.table(x=c(1,2,3,3,1), y=c(3,4,4,23,3))
setkey(a, "x", "y")
a[,x_cnt := .N, by=list(x)]
a[,y_cnt := .N, by=list(y)]
> a
x y x_cnt y_cnt
1: 1 3 2 2
2: 1 3 2 2
3: 2 4 1 2
4: 3 4 2 2
5: 3 23 2 1
這是到目前爲止我的代碼:
a = data.table(x=c(1,2,3,3,1), y=c(3,4,4,23,3))
my.f1cnt <- function(ds, variable_list)
{
for(var in variable_list)
{
setkey(ds, var)
ds[,paste0(var, "_cnt") := .N, by=list(var)]
}
#return
ds
}
my.f1cnt(a, c("x","y"))
Error in setkeyv(x, cols, verbose = verbose) :
some columns are not in the data.table: var
注根本不需要'setkey(v)'來進行聚合(通常速度更快)。 – Arun