我想根据某些条件递归地修改列表的值。
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)
        |   归档时间:  |  
           
  |  
        
|   查看次数:  |  
           53 次  |  
        
|   最近记录:  |