R 基于列值强制数据帧的列为逻辑列

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

我有一个大约有200列的数据集。在导入时,具有逻辑TRUE和FALSE值的列被强制为字符

     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"