如何在函数中将变量值用作(另一个)变量名



这可能很容易做到,但我找不到解决方案。

假设我有一系列变量:variable1,variable2。。。我想使用另一个变量/列表,如X<-c("variable1", variable2"...),来调用函数中的一个变量(variable1,variable2…)。

类似于:plot(X[1], Y),其中'X[1]'被解释为"variable1"。

有什么建议吗?

谢谢

Guillaume

-----第一次浏览后编辑--

get()函数正是我所需要的。我以前试过,但没能得到我想要的。我现在确实在工作。

感谢jlhoward和Ananda Mahto的帮助。

对于未来(潜在)读者,还有更多的解释:

使用myData,一个具有3列(Value1、Value2、Y)的数据帧

我可以做:

plot(Value1~Y, data=myData)

plot(Value2~Y, data=myData)

现在,如果我有一个像这样的矢量

myList<-c("Value1", "Value2")

我可以做:

i=1
plot(get(myList[i])~Y, data=myData)

i=2
plot(get(myList[i])~Y, data=myData)

更多评论/建议欢迎

这是我的评论和Roland的评论的组合。希望它能帮助你更接近回答你的问题,或者帮助你澄清你想做什么

首先,一些变量,"A"、"B"one_answers"C"

set.seed(1)
A <- rnorm(100)
B <- rnorm(100)
C <- rnorm(100)

接下来,这些变量的名称的向量,以及我们想要绘制的另一个变量"Y"。

X <- c("A", "B", "C")
Y <- 1:100

这里有一种方法:

lapply(X, function(x) plot(x = get(x), y = Y))

然而,首选的方法,特别是如果你要对向量做类似的事情,就是先把这些向量放在list中,然后再开始工作:

myList <- list(A, B, C)
lapply(myList, function(x) plot(x = x, y = Y))
# lapply(myList, sum) 
## or whatever else you want to do with each of these vectors

这就是你的意思吗?

f = function(x){return(x*x)}
X= c(1,2,3)
sapply(X,f)
[1] 1 4 9

sapply为列表X中的每个元素"应用"函数f,并生成一个向量作为输出。你也可以做:

sapply(1:3,function(x){return(x*x)})

最新更新