小编Hoe*_*elR的帖子

向量上管道运算符中的 Case_when 语句

我试图了解在操作向量时如何更好地在管道中使用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()不适用于矢量。但它显然是这样的: …

r pipe vector dplyr

5
推荐指数
1
解决办法
328
查看次数

标签 统计

dplyr ×1

pipe ×1

r ×1

vector ×1