提供给连续刻度的GGR图误差离散值
我有一份清单,见附件提供给连续刻度的GGR图误差离散值,r,dataframe,ggplot2,type-conversion,R,Dataframe,Ggplot2,Type Conversion,我有一份清单,见附件 Site Name 5833 count ratio 1 Boston 0 days per week 1 0.01428571 2 Boston 1 day per week 6 0.08571429 3 Boston 2 days per week 11 0.15714286 4 Boston 3 days per week 5 0.071
Site Name 5833 count ratio
1 Boston 0 days per week 1 0.01428571
2 Boston 1 day per week 6 0.08571429
3 Boston 2 days per week 11 0.15714286
4 Boston 3 days per week 5 0.07142857
5 Seattle 0 days per week 2 0.02857143
6 Seattle 1 day per week 6 0.08571429
7 Seattle 2 days per week 10 0.14285714
8 Seattle 3 days per week 8 0.11428571
当我使用ggplot-我必须使用name即使没有正式验证变量的名称,从所附的数据中可以明显看出,您传递的是字符串或因子,而没有查看类。通过运行以下命令,您可以轻松地将变量转换为数字:
com_agg$`5833` <- as.numeric(substr(com_agg$`5833`, 1, 1))
make.names(names(dta))
您正在使用的数据框似乎是使用
check.names=FALSE
创建的,如下所示:
data.frame("1" = 1, check.names = FALSE)
在做任何事情之前,我建议您可以考虑使用同步正确的名称,因此在上面的语法中<强> <代码> `代码/代码> /强>。您可以通过运行以下命令来创建语法正确的名称:
com_agg$`5833` <- as.numeric(substr(com_agg$`5833`, 1, 1))
make.names(names(dta))
在你的数据上。如果愿意,可以在ggplot
/dplyr
管道中引入以下语法:
setNames(make.names(names(.)), object = .)
这将修复语法错误的名称。例如,
5833
将变成X5833
。我认为这可能会让你的循环编写起来有点乏味,但从原则上讲,这样做是值得的,因为这样可以避免你使用`
以及将来尝试使用常量作为列名时可能出现的麻烦。doclass(com_agg[,c(name)]
。您应该看到,它不是一个数字列,这正是ggplot警告您的。此外,在aes()
中传递向量而不是列名将导致更复杂的绘图出现问题<代码>y=比率,良好;用x=com\u agg[,c(name)]
重新引用数据帧是错误的。最好是重命名您的列,使其遵循标准的列名准则(不以数字开头),并使用x=x5833
。我必须在ggplot中使用x=com_agg[,c(name)],因为这是一个for循环,name是在每次迭代中传递的变量。即使我将名称更改为X5833,我仍然必须在循环中使用x=com_agg[,c(name)]。“所以我不认为这能帮我解决问题。”詹姆斯旺的名字只是一个旁白。您可以使用get/paste组合使用X创建名称。关键是变量的时间不对,应该按照开头的建议将其转换为数字。@JamesWang在ggplot
中使用动态列名仍然是错误的。更好的方法是使用aes\u
、aes\u q
或aes\u string
(请参阅这些示例的文档)。您所采用的方法适用于简单的绘图,但不适用于更复杂的绘图,例如带有面或装箱数据的绘图。
setNames(make.names(names(.)), object = .)