我试图了解在操作向量时如何更好地在管道中使用if elseor 。case_when在抓取网站的元素后,我留下了这个向量:
[1] "66" "121" "112 - 150" "211" "197" "25" "72"
[8] "59" "100" "69 - 194"
c("66", "121", "112 - 150", "211", "197", "25", "72", "59", "100",
"69 - 194")
library(tidyverse)
library(stringr) (1.5.0)
Run Code Online (Sandbox Code Playgroud)
我想在将它们放入数据框/小标题之前在向量中对其进行操作。如果字符串中有两个数字(例如 112 - 150),则将其替换为两个数字的平均值。我已经尝试过以下方法:
vector %>%
case_when(
str_detect(., "-") ~ . %>%
str_split_1(" - ") %>%
as.numeric() %>%
mean(),
T ~ .
)
Run Code Online (Sandbox Code Playgroud)
这是行不通的。单独而言,它的工作原理是:
"112 - 150" %>%
str_split_1(" - ") %>%
as.numeric() %>%
mean()
[1] 131
Run Code Online (Sandbox Code Playgroud)
然后我想也许case_when()不适用于矢量。但它显然是这样的: …