在列表中使用 str_replace,并遍历所有元素

Using str_replace in a list, and iterate over all elemnts

在 R 中替换列表中的特定字符的好方法是什么?我倾向于更喜欢 tidyverse 函数 str_replace_all 和 map,但我也可以使用基本函数 gsub 和 lapply.

让我们创建一个列表:

df1 <- as.data.frame(iris) 
df2 <- as.data.frame(iris) 
df3 <- as.data.frame(iris) 

iris_list <- list(df1, df2, df3)

我想将所有提及“virginica”的内容替换为“flower”。所以我创建了一个自定义函数:

my_fun <- function(my_list){
  str_replace_all(my_list, pattern = "virginica", replacement = "flower")
}

函数str_replace需要一个向量作为输入。但是当我尝试使用 map 迭代列表的元素时,出现错误:“argument is not an atomic vector; coercing”

map(.x = iris_list, .f = my_fun)

可能的解决方案:

library(tidyverse)

map(iris_list, ~ mutate(.x, Species = str_replace(Species, "virginica", "flower")))