Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
提供给连续刻度的GGR图误差离散值_R_Dataframe_Ggplot2_Type Conversion - Fatal编程技术网

提供给连续刻度的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
。我认为这可能会让你的循环编写起来有点乏味,但从原则上讲,这样做是值得的,因为这样可以避免你使用
`
以及将来尝试使用常量作为列名时可能出现的麻烦。

do
class(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 = .)