如何在列表中使用case_when

塞巴斯蒂安·泽基(Sebastian Zeki)

我的清单如下:

   tryout<- list(c("stomach:biopsy", ",colon:biopsy", ",stomach:biopsy"), 
        character(0), character(0), "oesophagus:biopsy", character(0), 
        character(0))

我想"stomach:biopsy"用数字1代替术语。我想用case_whenfromdplyr

我试过了:

lapply(tryout, function(x) 
    x %>% 
           mutate(group = case_when( 
             grepl("stomach:biopsy",x ) ~ 1
           )))

但我得到了错误:

Error in UseMethod("mutate_") : 
  no applicable method for 'mutate_' applied to an object of class "character"

那么,如何为嵌套列表运行case_when?

阿克伦

由于空白元素很多,我们可以创建一个索引来检查是否至少有一个元素。根据模式细分listreplace

i1 <- lengths(tryout) > 0 
tryout[i1] <-  lapply(tryout[i1], function(x) replace(x, x == 'stomach:biopsy', 1))

如果部分匹配,则grep在OP的帖子中使用

tryout[i1] <-  lapply(tryout[i1], function(x) 
           replace(x, grep('stomach:biopsy', x), 1))

更新资料

根据OP的评论,有多种模式需要替换。在这种情况下,最好创建一个键/值数据集或命名的向量,然后执行一个left_join/match等。在这种情况下,由于它是部分匹配项,因此最好使用regex_left_joinfromfuzzyjoin

library(fuzzyjoin)
library(tidyverse)
# create a key/val tibble
d1 <- tibble(key = c("stomach:biopsy", "colon:biopsy", 
             "oesophagus:biopsy"), val = 1:3)

# loop through the list elements having at least one element
# left join with the key/val dataset
# pull the column of 'val'
# update the list elements
tryout[i1] <- map(tryout[i1], ~ 
                tibble(key = .x) %>%
                  regex_left_join(d1) %>%
                  pull(val))

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在 dplyr mutate() 函数中使用 case_when ?

如何在 R 中使用 case_when() 排除多个条件

如何在case_when中使用字符串检测?

如何在for循环中使用mutate()和case_when()?

在mutate_at中使用case_when

在 dplyr::case_when 中使用 NSE

在case_when中如何使用tidydots?

使用变量列表时如何使用或应该使用 case_when 更改值

使用case_when,如何更改将向量嵌套在其中的新列表列?

如何在首次使用唯一值时使用case_when创建新变量

在case_when()的LHS中使用值的位置出现

在dplyr中使用case_when时遇到问题

在Dplyr中使用case_when难以创建新列

在 R 中使用 case_when 和函数的条件

如何在R中同时使用计数函数和case_when?

如何在case_when中传递列名的向量

当使用CASE WHEN时,如何在Laravel中使用order by?

Dplyr:case_when - 如何使用选择列?

使用 case_when 时如何解决此错误?

如何在 case 语句的 when 条件中使用变量

如何在Sequelize中使用CASE WHEN表达式?

如何在 Oracle 中使用“CASE WHEN”语法?

在R中使用mutate,case_when,any()和all()函数使用Group by

如何调和purrr :: map与case_when

在 python 中使用 case_when 和 mutate 等价物

在对应阈值表中使用case_when和之间

错误:在case_when中使用胶水()时必须是字符,而不是胶水/字符

在 R 中的 dplyr 中使用带有 mutate 和 case_when 的 shift:未按预期工作

在 dplyr 1.0.0 中使用 case_when 跨多列应用条件