我正在使用以下命令从R中导出数据:
write.table(output,file = "data.raw", na "-9999", sep = "\t", row.names = FALSE, col.names = FALSE)
我的数据输出正确,但它将所有逻辑变量导出为TRUE
和FALSE
。
我需要在另一个只能处理数值的程序中读取数据。在导出期间是否有一种有效的方法可以将logical
列转换为数字1和0?由于我有大量的数字变量,所以希望能够自动遍历数据表中的所有变量。
或者,如果我的输出对象是data.table
,是否有一种将data.table
中所有逻辑变量转换为数值变量的有效方法?
如果有帮助的话,以下是生成包含逻辑变量的data.table
的代码(其中并不是大量逻辑变量,但足以用作示例代码):
DT = data.table(cbind(1:100, rnorm(100) > 0)
DT[ , V3:= V2 == 1 ]
DT[ , V4:= V2 != 1 ]
as.integer
的速度可能比as.numeric
快3倍(以下所有回答都使用它)。我尝试了:x <- sample(c(TRUE,FALSE,NA),1e8,replace=TRUE); system.time("+"(x)); system.time(as.integer(x)); system.time(as.numeric(x))
- Frankas.numeric
-- 我以为由于存储要求更小,as.integer
会更快 ... - MichaelChiricoas.integer
是对的。使用data.table
,如果你想用mean
或其他方法改变该列中的某些值,就会出现“class”冲突。否则,使用value=dat[[j]]+0L)
会更容易。 - akrun+A
。 - U13-Forward