我有以下向量:
c("c(`Kruskal-Wallis chi-squared` = 201.760850624131)", "c(df = 17)",
"1.26686891197831e-33", "Kruskal-Wallis rank sum test", "delta_Z by criteria"
)我想要这个输出:
c("201.760850624131", "17", "1.26686891197831e-33")谢谢你的帮助
发布于 2022-11-03 15:42:08
我们可以将str_extract与匹配一个或多个数字([0-9]+)的正则表达式([0-9]+)与一个或多个数字(然后是一个或多个数字)匹配,e与-或+以及任何数字相匹配。
library(stringr)
as.numeric(na.omit(str_extract(v1, "[0-9]+(\\.[0-9]+e[-+]\\d+)?")))-output
[1] 2.010000e+02 1.700000e+01 1.266869e-33数据
v1 <- c("c(`Kruskal-Wallis chi-squared` = 201.760850624131)", "c(df = 17)",
"1.26686891197831e-33", "Kruskal-Wallis rank sum test", "delta_Z by criteria"
)发布于 2022-11-03 15:46:12
我们可以尝试在这里使用str_extract作为regex选项:
x <- c("c(`Kruskal-Wallis chi-squared` = 201.760850624131)",
"c(df = 17)",
"1.26686891197831e-33",
"Kruskal-Wallis rank sum test",
"delta_Z by criteria"
)
output <- as.numeric(na.omit(str_extract(x, "\\d+(?:\\.\\d+)?(?:e[+-]\\d+)?")))
output
[1] 2.017609e+02 1.700000e+01 1.266869e-33对regex的解释:
\\d+匹配整数component(?:\\.\\d+)?可选的十进制component(?:e[+-]\\d+)?可选指数(正或负)发布于 2022-11-03 15:56:14
因为它似乎是R码:
x <- c("c(`Kruskal-Wallis chi-squared` = 201.760850624131)", "c(df = 17)",
"1.26686891197831e-33", "Kruskal-Wallis rank sum test", "delta_Z by criteria")
as.character(sapply(sapply(x[1:3], str2lang, USE.NAMES = F), eval))
#> [1] "201.760850624131" "17" "1.26686891197831e-33"https://stackoverflow.com/questions/74305774
复制相似问题