考虑这个列表:
l <- list(a=1:10,b=1:10,c=rep(0,10),d=11:20)
然后考虑这个示例代码(代表真正的较大代码)。它只是根据名称在列表中选择正确的元素。
参数:
对象:最多包含四个元素的列表(即,有时少于四个)。元素始终称为 a、b、c 和 d,但并不总是以相同的顺序出现在列表中。
x:要选择的元素的名称(即 a、b、c 或 d)
slct <- function(object,x) {
if (x=="a") {
object$a
} else if (x=="b") {
object$b
} else if (x=="c") {
object$c
} else if (x=="d") {
object$d
}
}
slct(l,"d")
当您不仅有 4 个元素,而是数百个元素时,这种方法变得不切实际。此外,我无法根据数字进行选择(例如,object[[1]]),因为元素每次的顺序不同。那么我怎样才能使上面的代码更短呢?
我在考虑 SAS 中的宏观方法,但当然这在 R 中不起作用。
slct <- function(object,x) {
object$x
}
object$a
slct(object=l,x="a")
我必须用什么替换 object$x 才能使其工作,但代码比上面的代码少?