gpt4 book ai didi

r - 将ggplot2与名称中带有空格的列一起使用

转载 作者:行者123 更新时间:2023-12-04 07:36:50 35 4
gpt4 key购买 nike

我有以下数据框结构

df <- as.data.frame(A)
colnames(df)<- c("Sum of MAE", "Company")
df <- na.omit(df)
df2 <- df[order(df[,1]),]
df2 <- head(df2, n=10)
ggplot(df2, aes_string("Sum of MAE", "Company", group=1) + geom_line())
print(df2)

这是数据的结构
 Sum of MAE Company
606 0.030156758080105 COCO
182 0.0600065426668421 APWC
836 0.0602272459239397 EDS
1043 0.0704327240953608 FREE
2722 0.09 VLYWW
1334 0.0900000000000001 IKAN
2420 0.104746328560384 SPU
860 0.106063964745531 ELON
2838 0.108373386847075 WTSL
1721 0.110086738825851 MTSL

ggplot似乎不起作用。经过一连串的错误,我现在得到的是
Error in parse(text = x) : <text>:1:5: unexpected symbol
1: Sum of

有人可以帮我让ggplot 2工作。

最佳答案

gh,这就是为什么您应始终确保具有有效的列名的原因。首先,这是您的数据集易于复制的版本

df2 <- data.frame(`Sum of MAE` = c(0.030156758080105, 0.0600065426668421, 
0.0602272459239397, 0.0704327240953608, 0.09, 0.0900000000000001,
0.104746328560384, 0.106063964745531, 0.108373386847075, 0.110086738825851
), Company = c("COCO", "APWC", "EDS", "FREE", "VLYWW", "IKAN", "SPU", "ELON",
"WTSL", "MTSL"), check.names=F)

ggplot(df2, aes_string("Sum of MAE", "Company", group=1) + geom_line())
# Error in parse(text = x) : <text>:1:5: unexpected symbol
# 1: Sum of
# ^

问题是 aes_string()使用 parse()将您的文本表达式转换为可以在data.frame中解析的适当的R符号。当您解析“MAE之和”时,这不是有效的R语法-也就是说,它不会解析为单个漂亮的符号名称。如果使用这样的“坏”名称,则可以使用反引号将其转义,以将表达式(空格和全部)视为符号。所以你可以做
ggplot(df2, aes_string("`Sum of MAE`", "Company", group=1)) + geom_line()
# or
ggplot(df2, aes(`Sum of MAE`, Company, group=1)) + geom_line()

但实际上最好坚持为data.frame使用有效的列名,而不是使用colnames()绕过检查。

如果要更改列名称以获取“更细”的轴标签,则可能应该使用 xlab()代替。例如
df3 <- data.frame(df2)
names(df3)
# [1] "Sum.of.MAE" "Company"
ggplot(df3, aes(Sum.of.MAE, Company, group=1)) +
geom_line() +
xlab("Sum of MAE values")

关于r - 将ggplot2与名称中带有空格的列一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29133567/

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