我希望使用向量化操作更改数据表中所选变量的类.我是data.table语法的新手,我正在努力学习.我现在的问题是基本的,但它会帮助我更好地理解数据表的思维方式!
这里问了一个类似的问题!但是,该解决方案似乎与重新分类一列或所有列有关.我的问题对于少数几列来说是独一无二的.
### Load package
require(data.table)
### Create pseudo data
data <- data.table(id = 1:10,
height = rnorm(10, mean = 182, sd = 20),
weight = rnorm(10, mean = 160, sd = 10),
color = rep(c('blue', 'gold'), times = 5))
### Reclass all columns
data <- data[, lapply(.SD, as.character)]
### Search for columns to be reclassed
index <- grep('(id)|(height)|(weight)', names(data))
### data frame method
df <- data.frame(data)
df[, index] <- lapply(df[, index], as.numeric)
### Failed attempt to reclass columns used the data.table method
data <- data[, lapply(index, as.character), with = F]
Run Code Online (Sandbox Code Playgroud)
任何帮助,将不胜感激.我的数据很大,因此使用正则表达式来创建列号的向量以重新分类是必要的.
感谢您的时间.
你可以通过使用避免.SD
内部构造的开销j
set
for(j in index) set(data, j =j ,value = as.character(data[[j]]))
Run Code Online (Sandbox Code Playgroud)
我认为@ SimonO101做了大部分工作
data[, names(data)[index] := lapply(.SD, as.character) , .SDcols = index ]
Run Code Online (Sandbox Code Playgroud)
你可以使用:=
魔法
归档时间: |
|
查看次数: |
2365 次 |
最近记录: |