组合 lapply 和 gsub 以将一个值列表替换为另一个值列表

Combine lapply and gsub to replace a list of values for another list of values

我目前正在寻找一种方法来简化在数据框中的列中搜索值向量并将每个值替换为另一个值(也包含在单独的向量中)的方法。我可以为此使用 运行 一个 for 循环,但在 apply 系列中它必须是可能的,我只是还没有看到它。对使用 apply 系列非常陌生,可以使用帮助。

到目前为止,我已经能够用新向量中的新第一个值替换向量中第一个值的所有实例,只是没有迭代到第一级。我希望这是有道理的。这是我的代码:

#standardize tank location
old_tank_list <-  c("7.C.4","7.C.5","7.C.6","7.C.7","7.C.8","7.C.9","7.C.10","7.C.11")
new_tank_list <- c("7.B.3-4","7.C.3-4","7.C.1-2","7.C.5-6","7.C.7-8","7.C.9-10","7.E.9-10","7.C.11-12")


sapply(df_growth$Tank,function(y) gsub(old_tank_list,std_tank_list,y))

Tank 是我试图替换其中所有这些值的列的名称。我还没有分配回来,因为我想先测试功能。感谢您提供的任何帮助。

希望这张图片能有所帮助。左边的照片是应用我的功能之前的列。右边的列是之后的。基本上,我只想批量更改文本值。

Before and After

library(dplyr)
df %>%
  mutate(Tank = recode(Tank, !!!setNames(new_tank_list, old_tank_list)))