我想根据某些条件递归地修改列表的值。
mylist = list(a = "test1",
b = list(bb = "test2", list(bbb = "test1")),
c = "test2")
Run Code Online (Sandbox Code Playgroud)
我想修改值为test1的值,并将其替换在此列表中或创建一个新列表。例如,如果修改是将test1替换为best1,则结果列表应为
mylist = list(a = "best1",
b = list(bb = "test2", list(bbb = "best1")),
c = "test2")
Run Code Online (Sandbox Code Playgroud)
在R中最干净的方法是什么?
您可以使用 rapply
out <- rapply(mylist, function(x) replace(x, x == "test1", "best1"), how = "replace")
Run Code Online (Sandbox Code Playgroud)
检查输出
identical(out,
list(a = "best1",
b = list(bb = "test2", list(bbb = "best1")),
c = "test2"))
# [1] TRUE
Run Code Online (Sandbox Code Playgroud)