Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用“粘贴”获取预先存在的变量_R - Fatal编程技术网

R 使用“粘贴”获取预先存在的变量

R 使用“粘贴”获取预先存在的变量,r,R,我试图在ggplot中创建一个循环,如下所示: LEDnum = c(1,2,3,4,5) for (i in 1:length(LEDnum)) { ggplot(LEDref,aes(x=sample1))+ geom_line(aes(y=assign(paste("LEDrefLED",LEDnum[i],sep="")))) + ggtitle(paste("LED ref + LED ",LEDnum[i],sep="")) } 我已经有了名为LEDrefLED1、L

我试图在ggplot中创建一个循环,如下所示:

LEDnum = c(1,2,3,4,5)

for (i in 1:length(LEDnum))
{
ggplot(LEDref,aes(x=sample1))+
  geom_line(aes(y=assign(paste("LEDrefLED",LEDnum[i],sep="")))) +
  ggtitle(paste("LED ref + LED ",LEDnum[i],sep=""))
  }

我已经有了名为LEDrefLED1、LEDrefLED2等的现有对象(数字列表)。但是,当我运行此代码时,它不会将geom_线数据识别为我的现有变量。我假设这是因为paste()创建了一个字符串,但由于我是R的新手,我不知道如何使它识别为先前存在的对象。

您可以使用aes_字符串,我没有您的数据集,因此我模拟了LEDrefLED1的值。此外,如果数据集不是太大,则将绘图存储在列表中

library(gridExtra)
library(reshape2)

LEDref = data.frame(matrix(rnorm(100),20,5))
colnames(LEDref) = paste("LEDrefLED",1:5,sep="")
LEDref$sample1 = 1:20

LEDnum = c(1,2,3,4,5)
plots = vector("list",5)
for (i in 1:length(LEDnum))
{
plots[[i]] = ggplot(LEDref ,aes(x=sample1))+
  geom_line(aes_string(y=paste("LEDrefLED",LEDnum[i],sep=""))) +
  ggtitle(paste("LED ref + LED ",LEDnum[i],sep=""))
  }
do.call(grid.arrange,plots)
大多数时候,也许有更好的方法来组织数据。因此,您可以始终旋转您拥有的数据帧,并执行如下的镶嵌面网格,这样可以避免字符串和循环

dat=melt(LEDref,id.vars="sample1")
colnames(dat)[2:3] = c("LEDnum","value")
ggplot(dat,aes(x=sample1,y=value))+ 
geom_line()+
facet_wrap(~LEDnum)
我建议检查
帮助(分配)
。它不会
获取
变量,而是
将变量分配给名称。要获取变量,您需要同时对多个变量使用
get
og
mget
。您更可能希望将数据存储在
列表中
并使用
i
引用
列表
。试着核对一下,然后回答第一个问题。或者在论坛上搜索
[ggplot][for loop]
。可能也有帮助。