R:向量化设置 R6 中的活动字段
R: Vectorise setting active fields in R6
我有一个简单的 R6 对象生成器,带有 get/set 主动绑定:
myClass <- R6Class("myClass",
private = list(
..status = TRUE
),
active = list(
status = function(value) {
if (missing(value)) {
private$..status
} else private$..status <- value
}
)
)
我可以创建一个对象列表,使用 myClass
:
生成
class_list <- map(1:10, ~ myClass$new())
我可以得到列表中每个对象的 status
,使用 purrr:: map
:
map(class_list, ~ .x$status)
但是如果我想设置class_list
中所有对象的status
怎么办?我想用 purrr:: walk
:
walk(class_list, ~ .x$status <- FALSE)
这会引发 Error: unexpected [symbol]...
,使用 =
.
也是如此
谁能提供解决方案?最好使用 purrr
。
谢谢!
我们可以将这些赋值包装在 {}
和 return 原始对象 (.x
)
中
map(class_list, ~ {.x$status <- FALSE; .x})
现在,再次检查 status
map_lgl(class_list, ~ .x$status)
#[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
我有一个简单的 R6 对象生成器,带有 get/set 主动绑定:
myClass <- R6Class("myClass",
private = list(
..status = TRUE
),
active = list(
status = function(value) {
if (missing(value)) {
private$..status
} else private$..status <- value
}
)
)
我可以创建一个对象列表,使用 myClass
:
class_list <- map(1:10, ~ myClass$new())
我可以得到列表中每个对象的 status
,使用 purrr:: map
:
map(class_list, ~ .x$status)
但是如果我想设置class_list
中所有对象的status
怎么办?我想用 purrr:: walk
:
walk(class_list, ~ .x$status <- FALSE)
这会引发 Error: unexpected [symbol]...
,使用 =
.
谁能提供解决方案?最好使用 purrr
。
谢谢!
我们可以将这些赋值包装在 {}
和 return 原始对象 (.x
)
map(class_list, ~ {.x$status <- FALSE; .x})
现在,再次检查 status
map_lgl(class_list, ~ .x$status)
#[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE