如果 a 的列名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
有什么办法可以在列名中有空格,或者它们以数字开头,我们可以在ggplot2中使用它们吗?请考虑我们可能不知道列名,因此请避免提供具有恒定列名的示例 - 如下所示:
aes_string(x=`1st Col`, y=`2nd Col`)