我目前正在寻找一种方法来简化在数据帧中的列中搜索值向量并将每个值替换为另一个值(也包含在单独的向量中)。我可以为此运行一个 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 是我尝试替换其中所有这些值的列的名称。我还没有将其分配回来,因为我想先测试一下功能。感谢您提供的任何帮助。
希望这张图片能有所帮助。左边的照片是应用我的函数之前的列。右边的列是后面的。基本上,我只想批量更改文本值。
最佳答案
library(dplyr)
df %>%
mutate(Tank = recode(Tank, !!!setNames(new_tank_list, old_tank_list)))
关于r - 结合 lapply 和 gsub 将一个值列表替换为另一个值列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70522236/