下面是我想要的一个简单的例子:参考函数参数与字符串名称中的R
“DF1”是两个变量“V1”和“V2”的数据帧,这样我就可以得到简单的ggplot功能如流:
ggplot(DF1,aes(x=V1,y=V2))+geom_line()
现在,如果我有以下两个字符串:
name1="V1"
name2="V2"
有没有办法在上面ggplot代码NAME 1和NAME更换V1和V2?我试图使用do.call,但没有解决。我觉得我需要公式般的目标来做到这一点。
下面是我想要的一个简单的例子:参考函数参数与字符串名称中的R
“DF1”是两个变量“V1”和“V2”的数据帧,这样我就可以得到简单的ggplot功能如流:
ggplot(DF1,aes(x=V1,y=V2))+geom_line()
现在,如果我有以下两个字符串:
name1="V1"
name2="V2"
有没有办法在上面ggplot代码NAME 1和NAME更换V1和V2?我试图使用do.call,但没有解决。我觉得我需要公式般的目标来做到这一点。
标准答案是
aes_string(x=name1, y=name2)
(肯定是重复的)
谢谢@baptiste看来我没有用正确的关键字高效地搜索 –
我找不到重复的(虽然它是一个FAQ),但很难搜索 – baptiste
我会重新命名列或者使用plyr
沿线
library(plyr)
DF1 <- rename(DF1, c("V1" = "name1"))
或我的最好的方式,使用data.table
require(data.table)
DT <- as.data.table(DF1)
setnames(DT, "V1","name1")
然后
ggplot(DT, aes(x=name1,y=name2))+geom_line()
设置一些V1
列工作等通常是适得其反的,而且是错误的或易发
UPDATE
感谢您的帮助@Severin Pappadeux。 baptiste的方式更容易,所以我给他信贷。 –
我只是弄清楚,得到()将工作!
ggplot(DF1,aes(x=get(name1),y=get(name2)))+geom_line()
R基本改变列名:
colnames(DF1)[colnames(DF1)=="V1"] <- "Name 1"
只有在情节?绘图之前的setNames可能会工作 –
感谢您的评论。你的意思是像setNames(V1,“name1”)或setNames(DF1 $ V1,“name1”)?我试过了,它不起作用。 –