首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用aes_string在变量名中添加空格

使用aes_string在变量名中添加空格
EN

Stack Overflow用户
提问于 2014-09-26 21:49:19
回答 2查看 856关注 0票数 2

这是我的df的一部分:

代码语言:javascript
复制
      CWRES      ID  AGE  BMI  WGT
3     0.59034000  1 37.5 20.7 64.6
4     1.81300000  1 37.5 20.7 64.6
5     1.42920000  1 37.5 20.7 64.6
6     0.59194000  1 37.5 20.7 64.6
7     0.30886000  1 37.5 20.7 64.6
8    -0.14601000  1 37.5 20.7 64.6
9    -0.19776000  1 37.5 20.7 64.6
10    0.74208000  1 37.5 20.7 64.6
11   -0.69280000  1 37.5 20.7 64.6
38   -2.42900000  1 37.5 20.7 64.6
39   -0.25732000  1 37.5 20.7 64.6
40   -0.49689000  1 37.5 20.7 64.6
41   -0.11556000  1 37.5 20.7 64.6
42    0.91036000  1 37.5 20.7 64.6
43   -0.24766000  1 37.5 20.7 64.6
44   -0.14962000  1 37.5 20.7 64.6
45   -0.45651000  1 37.5 20.7 64.6
48    0.53237000  2 58.5 23.0 53.4
49   -0.53284000  2 58.5 23.0 53.4
50   -0.33086000  2 58.5 23.0 53.4
51   -0.56355000  2 58.5 23.0 53.4
52    0.00883120  2 58.5 23.0 53.4
53   -1.00650000  2 58.5 23.0 53.4
80    0.85810000  2 58.5 23.0 53.4
81   -0.71715000  2 58.5 23.0 53.4
82    0.44346000  2 58.5 23.0 53.4
83    1.09890000  2 58.5 23.0 53.4
84    0.98726000  2 58.5 23.0 53.4
85    0.19667000  2 58.5 23.0 53.4
86   -1.32570000  2 58.5 23.0 53.4
89   -4.56920000  3 43.5 26.7 66.2
90    0.75174000  3 43.5 26.7 66.2
...

我想画这样的图:

代码语言:javascript
复制
for(i in names(tab3)[2:5]) {
  df2 <- tab3[, c(i, "CWRES")]
  p99 = ggplot(tab3) + geom_point(aes_string(x = i, y = "CWRES"))
  print(p99)
 }

问题是,如果我想更改xlab,它不能工作,因为我使用的是aes_string()

这不起作用:

代码语言:javascript
复制
names(tab3) = c("ID","age [years]","BMI (kg/m2)","body weight ,kg")
for(i in names(tab3)[2:5]) {
    df2 <- tab3[, c(i, "CWRES")]
  p99 = ggplot(tab3) + geom_point(aes_string(x = i, y = "CWRES"))
  print(p99)
}

我还尝试了另一种方法:

代码语言:javascript
复制
namecol = c("ID","age [kgg]","BMI","bodyweight")
for(i in names(tab3)[2:5]) {
    df2 <- tab3[, c(i, "CWRES")]
  p99 = ggplot(tab3) + geom_point(aes_string(x = i, y = "CWRES")) +
  ylab("CWRES") +
    for(a in namecol[1:4]) {
      xlab(namecol[a])
    }
  print(p99)
}

但它也不起作用。

我怎么才能让它工作呢?

EN

回答 2

Stack Overflow用户

发布于 2014-09-26 23:38:34

我认为关键在于,对于在aes_string中语法无效的名称,您需要使用反引号。把反引号放在引号里是一个我不知道的技巧。

aes_string出现之前,就有了能够在函数中使用ggplotthis trick。这将允许你绕过(而不是解决)你所遇到的问题。

这将涉及到基于数据集tab3创建绘图函数,然后使用lapply遍历解释变量的名称。这里我将绘图函数命名为plot1

代码语言:javascript
复制
names(tab3) = c("CWRES", "ID","age [years]","BMI (kg/m2)","body weight ,kg")

plot1 = function(variable) {
    tab3$variable = tab3[,variable]
    ggplot(tab3, aes(x = variable, y = CWRES)) +
        geom_point() +
        xlab(variable)
}

# Make a single plot
plot1(names(tab3)[3])

# Make all the plots; name object if want to save list
lapply(names(tab3)[2:5], function(x) plot1(x))
票数 1
EN

Stack Overflow用户

发布于 2018-09-26 23:51:45

问题就像@aosmith所说的那样,但实际上可以通过在字符串中添加反引号来解决:

代码语言:javascript
复制
new_names <- paste0("`", names(tab3), "`")

它将与aes_string一起工作。

顺便说一下,我还尝试了另一种简单的方法,比如:

代码语言:javascript
复制
ggplot(tab3) + geom_point(aes(x = tab3[[i]], y = CWRES))

这是可行的,但并不理想,因为轴标签将只是表达式tab3[[i]]

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26061184

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档