我有以下向量:
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")
謝謝你的幫助
uj5u.com熱心網友回復:
我們可以嘗試str_extract在這里使用正則運算式選項:
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
正則運算式的解釋:
\\d匹配一個整數分量(?:\\.\\d )?可選的小數部分(?:e[ -]\\d )?可選指數(正或負)
uj5u.com熱心網友回復:
因為它似乎是 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"
uj5u.com熱心網友回復:
我們可以使用str_extract匹配一個或多個數字([0-9] )的正則運算式,.然后是一個或多個數字,e 后跟-or 和任何數字
library(stringr)
as.numeric(na.omit(str_extract(v1, "[0-9] (\\.[0-9] e[- ]\\d )?")))
-輸出
[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"
)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/526539.html
標籤:r细绳提炼弦乐
