@g-grothendieck 的回答这个问题 https://stackoverflow.com/questions/53744379/assigning-a-value-to-a-list-item-using-assign/53745177#53745177启发我尝试一些分配函数,例如==<-
or ><-
.
请参阅以下内容:
`><-` <- function(e1,e2,value) replace(e1, e1 > e2, value)
x <- c(5,15)
x > 10 <- 42
x
# [1] 5 42
我也可以将其定义为<
:
`<<-` <- function(e1, e2, value) replace(e1, e1 < e2, value)
x <- c(5,15)
x < 10 <- 42
x
# [1] 42 15
但问题是现在<<-
运算符被重新定义,这不再起作用:
x <<- "hello"
替换错误(e1,which(e1
有趣的是x < y <- z
calls <<-
即使它没有被覆盖。
rm(`<<-`)
x < 10 <- 42
x
有没有办法保持原来的行为<<-
同时仍然定义这个自定义行为?
这似乎有效:
`<<-` <- function(e1, e2, value){
if(missing(value))
eval.parent(substitute(.Primitive("<<-")(e1, e2)))
else
replace(e1, e1 < e2,value)
}
x <- c(5,15)
x < 10 <- 42
x
# [1] 42 15
x <<- "hello"
x
# [1] "hello"
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)