将字符作为参数传递给函数的麻烦

时间:2017-03-11 05:05:05

标签: r

我在R中有一个for循环的代码。我想调用每个列的名称并将其用作ggplot的参数。我在这里的代码是for循环只能将i作为字符传递给aes。然而,aes不能把角色作为一个论据。 有什么想法吗? `

for (i in names(data)){
    dev.new()
    p<- ggplot(data = data,aes(x=Name,y=i,color=group))+geom_line()
    ggsave(filename = as.character(paste(i,'.pdf')),plot = p)
    dev.off()
    }

`

1 个答案:

答案 0 :(得分:0)

我可以想到两个主要选项:

  1. 使用aes_string使ggplot将字符串视为列名。不要忘记在其他变量中添加引号以使其正常工作
  2. p<- ggplot(data = data,aes_string(x="Name",y=i,color="group"))+geom_line()

    1. 使用data[,i]
    2. 直接提供y列

      p<- ggplot(data = data,aes_string(x=Name,y=data[,i],color=group))+geom_line()

      我更喜欢第一个选项,就像您稍后更改代码以过滤数据一样(例如ggplot(data=data[data[,i]>100,]...),您需要重复y值的过滤器。