如何在 R 中使用 <- 设置插槽(S4)的值
How to set the value of a slot(S4) using <- in R
我有一个对象 ob
class markovchain
。
> ob
An object of class "markovchain"
Slot "states":
[1] "a" "b" "c" "d" "e"
Slot "byrow":
[1] TRUE
Slot "transitionMatrix":
a b c d e
a 1 2 3 4 5
b 6 7 8 9 10
c 11 12 13 14 15
d 16 17 18 19 20
e 21 22 23 24 25
Slot "name":
[1] "deepak"
我的任务是创建一个方法来获取和设置 name
插槽的数据。
下面是获取name
槽中数据的方法。
> setGeneric("name", function(object) standardGeneric("name"))
[1] "name"
> setMethod("name", "markovchain",
+ function(object) {
+ out <- object@name
+ return(out)
+ }
+ )
[1] "name"
它工作正常。参见
> name(ob)
[1] "deepak"
现在我的任务是在name
槽中设置数据。我试过这个
setGeneric("name<-", function(object, ob_name) standardGeneric("name<-"))
setMethod("name<-", "markovchain",
function(object, ob_name) {
object@name <- ob_name
object
}
)
设置名称时出现错误。
> name(ob) <- "apple"
Error in `name<-`(`*tmp*`, value = "apple") :
unused argument (value = "apple")
我没有明白我做错了什么?任何帮助。
问题已解决。函数最后一个参数的名称必须是 value
.
setGeneric("name", function(object) standardGeneric("name"))
setMethod("name", "markovchain", function(object) {
out <- object@name
return(out)
})
setGeneric("name<-", function(object, value) standardGeneric("name<-"))
setMethod("name<-", "markovchain",
function(object, value) {
object@name <- value
object
}
)
查看输出。
> name(ob)
[1] "deepak"
> name(ob) <- "value is changed"
> name(ob)
[1] "value is changed"
我有一个对象 ob
class markovchain
。
> ob
An object of class "markovchain"
Slot "states":
[1] "a" "b" "c" "d" "e"
Slot "byrow":
[1] TRUE
Slot "transitionMatrix":
a b c d e
a 1 2 3 4 5
b 6 7 8 9 10
c 11 12 13 14 15
d 16 17 18 19 20
e 21 22 23 24 25
Slot "name":
[1] "deepak"
我的任务是创建一个方法来获取和设置 name
插槽的数据。
下面是获取name
槽中数据的方法。
> setGeneric("name", function(object) standardGeneric("name"))
[1] "name"
> setMethod("name", "markovchain",
+ function(object) {
+ out <- object@name
+ return(out)
+ }
+ )
[1] "name"
它工作正常。参见
> name(ob)
[1] "deepak"
现在我的任务是在name
槽中设置数据。我试过这个
setGeneric("name<-", function(object, ob_name) standardGeneric("name<-"))
setMethod("name<-", "markovchain",
function(object, ob_name) {
object@name <- ob_name
object
}
)
设置名称时出现错误。
> name(ob) <- "apple"
Error in `name<-`(`*tmp*`, value = "apple") :
unused argument (value = "apple")
我没有明白我做错了什么?任何帮助。
问题已解决。函数最后一个参数的名称必须是 value
.
setGeneric("name", function(object) standardGeneric("name"))
setMethod("name", "markovchain", function(object) {
out <- object@name
return(out)
})
setGeneric("name<-", function(object, value) standardGeneric("name<-"))
setMethod("name<-", "markovchain",
function(object, value) {
object@name <- value
object
}
)
查看输出。
> name(ob)
[1] "deepak"
> name(ob) <- "value is changed"
> name(ob)
[1] "value is changed"