R 全局标记(标记)作为函数参数传递的对象(例如,通过属性)
我试图在函数中将对象标记为“已处理”,并使用属性进行处理。这不起作用,因为当我设置属性时,R生成本地副本,所以我更改的是副本,而不是原始对象:R 全局标记(标记)作为函数参数传递的对象(例如,通过属性),r,R,我试图在函数中将对象标记为“已处理”,并使用属性进行处理。这不起作用,因为当我设置属性时,R生成本地副本,所以我更改的是副本,而不是原始对象: x <- "object 1" attr(x, "attr1") <- TRUE setAttr2 <- function(o) { attr(o, "attr2") <- TRUE invisible(NULL) # no return value possible } x # [1] "object 1" # a
x <- "object 1"
attr(x, "attr1") <- TRUE
setAttr2 <- function(o) {
attr(o, "attr2") <- TRUE
invisible(NULL) # no return value possible
}
x
# [1] "object 1"
# attr(,"attr1")
# [1] TRUE
setAttr2(x)
x # the attribute has not been set
# [1] "object 1"
# attr(,"attr1")
# [1] TRUE
看看这是否适合你
setAttr2 <- function(o) {
var <- deparse(substitute(o))
var_2 <- get(var)
attr(var_2, "attr2") <- TRUE
var_2
}
setAttr2(x)
> setAttr2(x)
[1] "object 1"
attr(,"attr2")
[1] TRUE
setAttr2 THX,使用get
是个好主意!我已经试过了,但我认为它不起作用(例如setAttr2(x);x
显示函数调用后,函数的返回值只有attr2
,而不是x
。奇怪的是,x不能使用返回值的原因是因为我在R的错误条件处理函数中,我想在条件obje中添加一个属性CT(参数<代码> e <代码>下面),我不能改变R来考虑我的返回值:<代码> TyMe抓获(停止(“DAMN”),错误=函数(E){AtTr(E,“我的.TAG”)),抱歉。我再考虑一下。
setAttr2 <- function(o) {
var <- deparse(substitute(o))
var_2 <- get(var)
attr(var_2, "attr2") <- TRUE
var_2
}
setAttr2(x)
> setAttr2(x)
[1] "object 1"
attr(,"attr2")
[1] TRUE