将字符串转换为逻辑格式
To convert string to logical format
xa <- c(TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE)
class(xa)
[1] "logical"
这里我们可以看到上面是TRUE和FALSE的顺序,当我们尝试查看XA对象的数据类型时,它显示逻辑类型。
但是当创建一个 TRUE 和 FALSE 的字符串并进一步保存在一个对象中时,它显示数据类型为字符,所要求的是数据类型应该是合乎逻辑的。
spliz <- paste("c(","TRUE,",paste(rep("FALSE",22),collapse=","),")")
spliz <- gsub(" ","",spliz)
class(spliz)
[1] "character"
所以需要的是上面的数据类型应该符合逻辑
如评论所述,您应该使用 eval(parse(text=spliz))
,这将为您提供逻辑值。
class(eval(parse(text=spliz))
[1] "logical"
或者,您可以使用 TRUE
和 FALSE
或 T
和 F
而不是 "TRUE"
和 [=17= 创建矢量].
xa <- c(TRUE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE,FALSE)
class(xa)
[1] "logical"
这里我们可以看到上面是TRUE和FALSE的顺序,当我们尝试查看XA对象的数据类型时,它显示逻辑类型。
但是当创建一个 TRUE 和 FALSE 的字符串并进一步保存在一个对象中时,它显示数据类型为字符,所要求的是数据类型应该是合乎逻辑的。
spliz <- paste("c(","TRUE,",paste(rep("FALSE",22),collapse=","),")")
spliz <- gsub(" ","",spliz)
class(spliz)
[1] "character"
所以需要的是上面的数据类型应该符合逻辑
如评论所述,您应该使用 eval(parse(text=spliz))
,这将为您提供逻辑值。
class(eval(parse(text=spliz))
[1] "logical"
或者,您可以使用 TRUE
和 FALSE
或 T
和 F
而不是 "TRUE"
和 [=17= 创建矢量].