/ / Rで1つのステップでリストを複製および変更することは可能ですか? --r、リスト

Rで1ステップでリストを複製および変更することは可能ですか? -r、リスト

私はこれをたくさんやっていることに気づきます:

my_list <- list(a = list(b = "something"), c = 3, d = "a lot of other options")

my_list_2 <- my_list
my_list_2$a$b <- "something_else"
my_list_2$c <- 5

これの速記があるのだろうかと思っていました。何かのようなもの:

my_list_2 <- xxxxx(my_list, list(a = list(b = "something_else"), c = 5))

更新:私の意図した出力は次のとおりです。

my_list # unchanged
my_list_2 # list(a = list(b = "something_else"), c = 5, d = "a lot of other options")

回答:

回答№1の場合は3

一つの選択肢は、 ?within

within(my_list, {a$b = "something_else"; c = 5})
#$a
#$a$b
#[1] "something_else"
#
#
#$c
#[1] 5
#
#$d
#[1] "a lot of other options"

もちろん、結果を新しいオブジェクトに割り当てることで、同じステップで複製を行うことができます。

my_list2 <- within(my_list, {a$b = "something_else"; c = 5})

回答№2については4

modifyList 質問がxxxxに対して示す形式とまったく同じです。

new_list <- modifyList(my_list, list(a = list(b = "something_else"), c = 5))