gpt4 book ai didi

r - ggplot aes_string 不适用于空格

转载 作者:行者123 更新时间:2023-12-03 15:49:40 26 4
gpt4 key购买 nike

不起作用:

mydat <- data.frame(`Col 1`=1:5, `Col 2`=1:5, check.names=F)
xcol <- "Col 1"
ycol <- "Col 2"
ggplot(data=mydat, aes_string(x=xcol, y=ycol)) + geom_point()

作品:
mydat <- data.frame(`A`=1:5, `B`=1:5)
xcol <- "A"
ycol <- "B"
ggplot(data=mydat, aes_string(x=xcol, y=ycol)) + geom_point()

作品。
mydat <- data.frame(`Col 1`=1:5, `Col 2`=1:5, check.names=F)
ggplot(data=mydat, aes(x=`Col 1`, y=`Col 2`)) + geom_point()

有什么问题?

最佳答案

传递给 aes_string 的值是 parse() -d。这是因为你可以传递诸如 aes_string(x="log(price)") 之类的东西。您传递的不是列名而是表达式。所以它把你的字符串当作一个表达式,当它解析它时,它找到了空格,这是一个无效的表达式。您可以通过将列名称括在引号中来“修复”此问题。例如,这有效

mydat <- data.frame(`Col 1`=1:5, `Col 2`=1:5, check.names=F)
xcol <- "Col 1"
ycol <- "Col 2"
ggplot(data=mydat, aes_string(x=shQuote(xcol), y=shQuote(ycol))) + geom_point()

我们只是使用 shQuote()只是在我们的值(value)观周围加双引号。您也可以像在字符串中的另一个示例中那样嵌入单个刻度
mydat <- data.frame(`Col 1`=1:5, `Col 2`=1:5, check.names=F)
xcol <- "`Col 1`"
ycol <- "`Col 2`"
ggplot(data=mydat, aes_string(x=xcol, y=ycol)) + geom_point()

但是处理这个问题的真正最好的方法是不要使用不是有效变量名的列名。

关于r - ggplot aes_string 不适用于空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51658629/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com