gpt4 book ai didi

r - ggplot2 aes_string() 无法处理以数字开头或包含空格的名称

转载 作者:行者123 更新时间:2023-12-01 22:18:01 24 4
gpt4 key购买 nike

如果data.frame的列名以数字开头,或者有空格,aes_string()无法处理它们:

foo=data.frame("1st Col"=1:5, "2nd Col"=5:1, check.names=F)
bar=colnames(foo)
ggplot(foo, aes_string(x=bar[1],y=bar[2])) + geom_point()
# Error in parse(text = x) : <text>:1:2: unexpected symbol
# 1: 1st
# ^

foo=data.frame("First Col"=1:5, "Second Col"=5:1, check.names=F)
bar=colnames(foo)
ggplot(foo, aes_string(x=bar[1],y=bar[2])) + geom_point()
# Error in parse(text = x) : <text>:1:7: unexpected symbol
# 1: First Col
# ^

foo=data.frame("First_Col"=1:5, "Second_Col"=5:1, check.names=F)
bar=colnames(foo)
ggplot(foo, aes_string(x=bar[1],y=bar[2]))+geom_point()
# Now it works

enter image description here

有什么方法可以在列名中包含空格,或者它们以数字开头,并且我们可以在ggplot2中使用它们?请考虑我们可能不知道列名称,因此请避免提供具有常量列名称的示例 - 如下所示:

aes_string(x=`1st Col`, y=`2nd Col`)

最佳答案

据我所知,此方法应该以编程方式工作:

foo=data.frame("1st Col"=1:5, "2nd Col"=5:1, check.names=F)

#Save the colnames
bar=colnames(foo)

#change the names to something usable
names(foo) <- c("col1", "col2")

#Plot with arbitrary labs
ggplot(foo, aes(x=col1, y=col2)) + geom_point()+
labs(x=bar[1], y=bar[2])

enter image description here

关于r - ggplot2 aes_string() 无法处理以数字开头或包含空格的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13445435/

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