R 尝试删除sd=0列时内存耗尽

R 尝试删除sd=0列时内存耗尽,r,R,我正试图删除sd=0的数字列,这时会弹出错误“error:memory expensed(limit reated?)”,我的“data”是用fread读取的 data2 <- data[ - as.numeric(which(apply(data, 2, var) == 0))] Error: memory exhausted (limit reached?) data2您可以使用matrixStats包中的colVars,该包通常速度很快 data2 <- data[matri

我正试图删除sd=0的数字列,这时会弹出错误“error:memory expensed(limit reated?)”,我的“data”是用fread读取的

data2 <- data[ - as.numeric(which(apply(data, 2, var) == 0))]
Error: memory exhausted (limit reached?)

data2您可以使用
matrixStats
包中的
colVars
,该包通常速度很快

data2 <- data[matrixStats::colVars(as.matrix(data)) != 0, ]

data2尝试使用
data.table
语法:

library(data.table)
idx <- data[, sapply(.SD, function(col) var(col)==0)]
data2 <- data[, -idx, with=FALSE]
库(data.table)

idx您可以尝试使用几个变量简化此表达式如果您真的要删除列,则应在内部代码前面加一个逗号,并在
with=F
旁边加上逗号。它将变成
data[,-as.numeric(其中(apply(data,2,var)==0)),带有=F]
。尝试了matrixStats,出现了此错误>>错误:无法分配大小为1.4 Gb的向量