gpt4 book ai didi

将逻辑值 (TRUE/FALSE) 替换为数字 (1/0)

转载 作者:行者123 更新时间:2023-12-02 06:07:44 25 4
gpt4 key购买 nike

我正在使用以下命令从 R 导出数据:

write.table(output,file = "data.raw", na "-9999", sep = "\t", row.names = FALSE, col.names = FALSE)

它正确导出我的数据,但将所有逻辑变量导出为 TRUEFALSE

我需要将数据读入另一个只能处理数值的程序。有没有一种有效的方法可以在导出过程中将逻辑列转换为数字1和0?我有大量的数值变量,所以我希望自动循环 data.table 中的所有变量

或者,我的输出对象是一个data.table。有没有一种有效的方法可以将 data.table 中的所有逻辑变量转换为数值变量?

如果有帮助,这里有一些代码用于生成一个包含逻辑变量的data.table(它不是大量逻辑变量,但足以在示例代码中使用) ):

DT = data.table(cbind(1:100, rnorm(100) > 0)
DT[ , V3:= V2 == 1 ]
DT[ , V4:= V2 != 1 ]

最佳答案

对于 data.frame,您可以使用以下方法将所有逻辑列转换为数字:

# The data
set.seed(144)
dat <- data.frame(V1=1:100,V2=rnorm(100)>0)
dat$V3 <- dat$V2 == 1
head(dat)
# V1 V2 V3
# 1 1 FALSE FALSE
# 2 2 TRUE TRUE
# 3 3 FALSE FALSE
# 4 4 FALSE FALSE
# 5 5 FALSE FALSE
# 6 6 TRUE TRUE

# Convert all to numeric
cols <- sapply(dat, is.logical)
dat[,cols] <- lapply(dat[,cols], as.numeric)
head(dat)
# V1 V2 V3
# 1 1 0 0
# 2 2 1 1
# 3 3 0 0
# 4 4 0 0
# 5 5 0 0
# 6 6 1 1

data.table语法中:

# Data
set.seed(144)
DT = data.table(cbind(1:100,rnorm(100)>0))
DT[,V3 := V2 == 1]
DT[,V4 := FALSE]
head(DT)
# V1 V2 V3 V4
# 1: 1 0 FALSE FALSE
# 2: 2 1 TRUE FALSE
# 3: 3 0 FALSE FALSE
# 4: 4 0 FALSE FALSE
# 5: 5 0 FALSE FALSE
# 6: 6 1 TRUE FALSE

# Converting
(to.replace <- names(which(sapply(DT, is.logical))))
# [1] "V3" "V4"
for (var in to.replace) DT[, (var):= as.numeric(get(var))]
head(DT)
# V1 V2 V3 V4
# 1: 1 0 0 0
# 2: 2 1 1 0
# 3: 3 0 0 0
# 4: 4 0 0 0
# 5: 5 0 0 0
# 6: 6 1 1 0

关于将逻辑值 (TRUE/FALSE) 替换为数字 (1/0),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30943167/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com