我想将"is"/“否”的字符串数组转换为 boolean 类型。
首先,我检查是否存在 NA:
convert(Array, datsub[:s734y])
不起作用,所以有 NA
所以我将 NA 转换为“否”
datsub[isna(datsub[:s734y]),:s734y] = "否"
然后这个就起作用了:
map(s->s==""||s=="NA"? "No": s, datsub[:s734y])
所以我有点确定(也通过查看数据集)我只有"is"/“否”值
我将其转换为 boolean 值的代码是:
convert(Vector{Bool},map(q->tryparse(Bool,q),datsub[:s734y]))
返回不精确错误
知道为什么我的代码是错误的吗?
附录:类型转换目前对我来说是一个普遍的挫败感。
最佳答案
如果没有可重现的示例,很难理解您正在做的事情,但您可以执行如下操作:
julia> q = ["yes", "no"]
julia> parsebool(s::String) = lowercase(s) == "yes" ? true: false
julia> qbool = Bool[parsebool(x) for x in q]
2-element Array{Bool,1}:
true
false
虽然比使用内置函数稍微多一些工作,但您还可以为遇到的每种类型的字符串值定义自定义逻辑。我使用了三元运算符,所以我假设您只有"is"/“否”。但可以使用 if/elseif/else
轻松扩展此示例,使其适用于您可能接受的任何字符串值系列。
关于string - 在 Julia 中从字符串转换为 boolean 值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37868940/