使用data.table标准化变量时出现找不到":="函数的错误求助
问题排查:data.table中
:=函数找不到的错误 你使用data.table专属语法标准化变量时出现错误,原因及解决办法如下:
你的代码
standardise = function(x){(x-mean(x, na.rm = TRUE))/sd(x, na.rm = TRUE)} # 定义标准化函数 oldcols = c('B', 'ARP') # 需标准化的原列名 newcols = paste0('z_', oldcols) # 生成新列名('z_B' 和 'z_ARP') QBB_clean[, (newcols) := lapply(.SD, standardise), .SDcols = oldcols]
错误信息
Error in
:=((newcols), lapply(.SD, standardise)) : could not find function ":="
错误原因及解决步骤
原因1:未加载data.table包
:=是data.table包专属的列赋值运算符,若未加载该包,R无法识别此函数。解决:先执行library(data.table)确保包已加载。原因2:QBB_clean不是data.table对象
如果QBB_clean是普通的data.frame,无法使用data.table的:=语法。解决:将其转换为data.table对象:QBB_clean <- as.data.table(QBB_clean)转换完成后再运行你的列赋值代码即可。另外,也可以在读取数据时直接使用data.table提供的
fread()函数,直接生成data.table对象,省去后续转换步骤。
内容的提问来源于stack exchange,提问作者N_H
相关产品推荐
相关产品推荐

