R 基于列值强制数据帧的列为逻辑列
我有一个大约有200列的数据集。在导入时,具有逻辑TRUE和FALSE值的列被强制为字符R 基于列值强制数据帧的列为逻辑列,r,R,我有一个大约有200列的数据集。在导入时,具有逻辑TRUE和FALSE值的列被强制为字符 Col1 Col2 Col3 . . . 1 "A" 100 "TRUE" 2 "B" 110 "FALSE" 3 "C" 120 "FALSE" 4 "D" 130 "TRUE" . . . 考虑到上面的数据帧示例,似乎我可以使用类似于as.logica
Col1 Col2 Col3 . . .
1 "A" 100 "TRUE"
2 "B" 110 "FALSE"
3 "C" 120 "FALSE"
4 "D" 130 "TRUE"
.
.
.
考虑到上面的数据帧示例,似乎我可以使用类似于as.logical(df$Col3)
的方法强制它返回,但这将是一个非常手动的过程,需要遍历所有200多列,将真、假列更改为逻辑列
是否可以根据列的值从整个数据框中有条件地选择列,并将这些列转换为逻辑数据类型?您可以确定是否应使用以下方法转换每列:
(to.conv <- sapply(dat, function(x) all(x %in% c("FALSE", "TRUE"))))
# Col1 Col2 Col3 Col4
# FALSE TRUE FALSE TRUE
(to.conv
dat[,to.conv] <- sapply(dat[,to.conv], as.logical)
str(dat)
# 'data.frame': 3 obs. of 4 variables:
# $ Col1: chr "a" "b" "c"
# $ Col2: logi TRUE FALSE TRUE
# $ Col3: chr "a" "b" "c"
# $ Col4: logi TRUE TRUE TRUE
dat <- data.frame(Col1=c("a", "b", "c"), Col2=c("TRUE", "FALSE", "TRUE"), Col3=c("a", "b", "c"), Col4=c("TRUE", "TRUE", "TRUE"), stringsAsFactors=F)
str(dat)
# 'data.frame': 3 obs. of 4 variables:
# $ Col1: chr "a" "b" "c"
# $ Col2: chr "TRUE" "FALSE" "TRUE"
# $ Col3: chr "a" "b" "c"
# $ Col4: chr "TRUE" "TRUE" "TRUE"