这可能很容易做到,但我找不到解决方案。
假设我有一系列变量: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)})