如何在R中部分更新或合并列表?

Kun*_*Ren 11 r

这是一个R列表:

list1 <- list(var1=1,var2=list(var21=1,var22=2,var23=list(var231=1,var232=0)))
Run Code Online (Sandbox Code Playgroud)

这是另一个R列表:

list2 <- list(var1=3,var2=list(var22=0,var23=list(var232=1,var233=2)),var3=list(var31=1))
Run Code Online (Sandbox Code Playgroud)

现在我想更新list1list2,其中应包括更新现有的值,并引进新的价值.其结果是var1,var22,var232应更新为指定的值list2,并且var233,var3,var31应引入新的条目.因此,更新的列表应该是:

list(var1=3,var2=list(var21=1,var22=0,var23=list(var231=1,var232=2,var233=2)),var3=list(var31=1))
Run Code Online (Sandbox Code Playgroud)

它与默认设置和用户特定设置非常相似.应通过用户特定设置加载和更新默认设置.在我的使用中,我只是从JSON文件(default.json)创建一个R列表作为默认设置,并希望通过另一个JSON文件(user.json)生成的另一个列表更新默认设置,就像许多程序一样.

是否有现成的包或一些简单/体面的方式来做到这一点?

ton*_*nov 14

有一个modifyList用于这些目的.请注意,我更正了list3定义,您所需的输出中存在错误.

list4 <- modifyList(list1, list2)
list3 <- list(var1=3,var2=list(var21=1,var22=0,var23=list(var231=1,var232=1,var233=2)),var3=list(var31=1))
all.equal(list3, list4)
[1] TRUE
Run Code Online (Sandbox Code Playgroud)