这应该很容易,但是我发现的所有示例都有稍微不同的目标。
我得到了 list :
lst1 = list(
Plot = TRUE,
Constrain = c(1:10),
Box = "plot"
)
lst2 = list(
Plot = FALSE,
Lib = "custom"
)
存储默认参数(lst1)和自定义参数(lst2)的参数,这些参数应覆盖默认值。结果我想要:
>lst
$Plot
[1] FALSE
$Constrain
[1] 1 2 3 4 5 6 7 8 9 10
$Box
[1] "plot"
$Lib
[1] "custom"
所以:
lst1中确实存在的lst2的
lst2中不存在的lst1的
对不起,我无法弄清楚。我尝试过merge():
lst=merge(lst2,lst1)
给
[1] Plot Lib Constrain Box
<0 Zeilen> (oder row.names mit Länge 0)
- 编辑 -
fabians建议的解决方案正是我所需要的。甚至更多:它可以处理嵌套列表,例如
ParametersDefault = list(
Plot = list(
Surface = TRUE,
PlanView= TRUE
),
Constrain = c(1:10),
Box = "plot"
)
Parameters = list(
Plot = list(
Surface = FALSE,
Env = TRUE
),
Lib = "custom"
)
Parameters = modifyList(ParametersDefault,Parameters)
print(Parameters$Plot$Surface)
# [1] FALSE
非常感谢!
最佳答案
lst1 = list(
Plot = TRUE,
Constrain = c(1:10),
Box = "plot"
)
lst2 = list(
Plot = FALSE,
Lib = "custom"
)
modifyList(lst1, lst2)
# $Plot
# [1] FALSE
#
# $Constrain
# [1] 1 2 3 4 5 6 7 8 9 10
#
# $Box
# [1] "plot"
#
# $Lib
# [1] "custom"