Tôi muốn sửa đổi một tập hợp các cột bên trong một data.table thành các yếu tố. Nếu tôi biết tên của các cột trước, tôi nghĩ điều này sẽ rất đơn giản.Tôi có thể cập nhật một cách lập trình loại tập hợp các cột (thành các yếu tố) trong data.table không?
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)]
Nhưng tôi không, và thay vào đó có một danh sách các tên biến
vars.factors <- c('b','c')
tôi có thể áp dụng các chức năng yếu tố đối với họ mà không có một vấn đề ...
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))])
Nhưng tôi không biết cách gán lại hoặc cập nhật cột ban đầu trong bảng dữ liệu.
này thất bại ...
lapply(vars.factors, function(x) dt1[,x:=factor(get(x))])
# Error in get(x) : invalid first argument
Như thực hiện điều này ...
lapply(vars.factors, function(x) dt1[,get(x):=factor(get(x))])
# Error in get(x) : object 'b' not found
NB. Tôi đã thử câu trả lời được đề xuất here mà không có bất kỳ may mắn nào.
Looking for này? dt2 = as.data.table (lapply (dt1, factor)) – KFB