在data.table - R中动态分配列名和列值

时间:2017-05-26 06:44:22

标签: r dynamic data.table calculated-columns

我正在使用Carseats数据集在ISLR包中找到,我想找到一种自动创建新功能的方法 - 即。变量。首先,我想为Sales的所有预测变量创建二次多项式。

我使用插入符号库函数dummyVars()将因子转换为虚拟变量。 代码如下:

dummies <- dummyVars(~ ., data = Carseats_)
Carseats_d <- predict(dummies, newdata = Carseats_)
Carseats_d <- as.data.frame(Carseats_d)
setDT(Carseats_d)

然后我使用Stackoverflow帖子(Select / assign to data.table variables which names are stored in a character vector)中找到的代码:

a1 <- data.table(a=1:5, b=6:10, c1=letters[1:5])
sapply(a1, class)  # show classes of columns
#         a           b          c1 
# "integer"   "integer" "character" 
# column name character vector
nm <- c("a", "b")
# Convert columns a and b to numeric type
a1[, j = (nm) := lapply(.SD, as.numeric ), .SDcols = nm ]

我根据需要调整此代码,如下所示:

 > dim(Carseats_d)
    [1] 400  15
    predictors <- setdiff(names(Carseats_d), "Sales")
    Carseats_d[, j = (predictors) := lapply(.SD, function(x){x^2} ), .SDcols = predictors ]
> dim(Carseats_d)
[1] 400  15

所以,没有任何反应。

你能帮我理解为什么我的代码不起作用我应该修复它吗?

您的建议将不胜感激。

0 个答案:

没有答案