我有一个由数字和字符组成的矢量,它们被视为字符,例如:
mix <- c("50", ">10^4", "<10", "325")
我了解如何剥离>
和<
并应用as.numeric()
。但是,这将导致NA
的{{1}}值。
我尝试使用"10^4"
,但这不起作用,只是返回字符。
当前,我的功能是:
eval("10^4")
是否可以添加使用f_convert2numeric <- function(vec){
nvec = eval(as.numeric(gsub(">","",gsub("<","",vec))))
return(nvec)
}
将字符转换为数字的功能?最好以^
为基数,但对替代方法感到满意。
答案 0 :(得分:2)
使用:
sapply(gsub("[<>]", "", mix), function(x) eval(parse(text = x)), USE.NAMES = FALSE)
给予:
[1] 50 10000 10 325
如果省略USE.NAMES = FALSE
,则会得到一个命名向量:
50 10^4 10 325 50 10000 10 325
可能值得考虑将vapply
胜过sapply
(see here for an explanation why this is safer):
vapply(gsub("[<>]", "", mix), function(x) eval(parse(text = x)),
FUN.VALUE = 1, USE.NAMES = FALSE)