我们如何使用其数字索引(位置)的向量选择多个列data.table?
这就是我们如何处理data.frame:
df <- data.frame(a = 1, b = 2, c = 3)
df[ , 2:3]
# b c
# 1 2 3
Run Code Online (Sandbox Code Playgroud) 我想将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)]
Run Code Online (Sandbox Code Playgroud)
但我没有,而是有一个变量名列表
vars.factors <- c('b','c')
Run Code Online (Sandbox Code Playgroud)
我可以毫无问题地将因子函数应用于它们......
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))])
Run Code Online (Sandbox Code Playgroud)
但我不知道如何重新分配或更新数据表中的原始列.
这失败了......
lapply(vars.factors, function(x) dt1[,x:=factor(get(x))])
# Error in get(x) : invalid first argument
Run Code Online (Sandbox Code Playgroud)
就像这样......
lapply(vars.factors, function(x) dt1[,get(x):=factor(get(x))])
# Error in get(x) : object 'b' not found
Run Code Online (Sandbox Code Playgroud)
NB.我试着在这里提出的答案没有任何运气.