假设我有两个名称列表,
a = list( a=1, b=2, c=list( d=1, e=2 ), d=list( a=1, b=2 ) )
b = list( a=2, c=list( e=1, f=2 ), d=3, e=2 )
我想递归合并这些列表,如果第二个参数包含冲突值,则覆盖条目。 IE。预期的输出将是
$a
[1] 2
$b
[1] 2
$c
$c$d
[1] 1
$c$e
[1] 1
$c$f
[1] 2
$d
[1] 3
$e
[1] 2
有什么提示吗?
最佳答案
我不确定在这里是否需要自定义功能。有一个函数utils::modifyList()
可以执行完全相同的操作!有关更多信息,请参见modifyList。
a <- list( a=1, b=2, c=list( d=1, e=2 ), d=list( a=1, b=2 ) )
b <- list( a=2, c=list( e=1, f=2 ), d=3, e=2 )
modifyList(a, b) # updates(modifies) 'a' with 'b'
这给出了以下内容
$a
[1] 2
$b
[1] 2
$c
$c$d
[1] 1
$c$e
[1] 1
$c$f
[1] 2
$d
[1] 3
$e
[1] 2
关于R-使用覆盖和递归合并列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13811501/