【发布时间】:2014-12-05 14:35:19
【问题描述】:
我想将 data.table 中的一组列修改为因子。如果我事先知道列的名称,我想这会很简单。
library(data.table)
dt1 <- data.table(a = (1:4), b = rep(c('a','b')), c = rep(c(0,1)))
dt1[,class(b)]
dt1[,b:=factor(b)]
dt1[,class(b)]
但我没有,而是有一个变量名列表
vars.factors <- c('b','c')
我可以毫无问题地将因子函数应用于它们......
lapply(vars.factors, function(x) dt1[,class(get(x))])
lapply(vars.factors, function(x) dt1[,factor(get(x))])
lapply(vars.factors, function(x) dt1[,factor(get(x))])
但我不知道如何重新分配或更新数据表中的原始列。
这失败了……
lapply(vars.factors, function(x) dt1[,x:=factor(get(x))])
# Error in get(x) : invalid first argument
这样...
lapply(vars.factors, function(x) dt1[,get(x):=factor(get(x))])
# Error in get(x) : object 'b' not found
注意。我尝试了here 提出的答案,但没有任何运气。
【问题讨论】:
-
寻找这个? dt2 = as.data.table(lapply(dt1, 因子))
标签: r data.table r-factor