Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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
R 如何将平均值线添加到因子的绘图中?_R_Bar Chart_Mean - Fatal编程技术网

R 如何将平均值线添加到因子的绘图中?

R 如何将平均值线添加到因子的绘图中?,r,bar-chart,mean,R,Bar Chart,Mean,我对文档和系数的plot()的返回值有问题。我想在绘图中添加一条带平均值的水平线,但我无法计算它。我希望能够利用这个情节的价值,但我失败了。例如: > x<-sample(5, 10, replace=TRUE) > x [1] 3 5 1 4 5 4 2 4 1 5 > y<-plot(factor(x)) > y [,1] [1,] 0.7 [2,] 1.9 [3,] 3.1 [4,] 4.3 [5,] 5.5 >x [1] 3 5

我对文档和系数的
plot()
的返回值有问题。我想在绘图中添加一条带平均值的水平线,但我无法计算它。我希望能够利用这个情节的价值,但我失败了。例如:

> x<-sample(5, 10, replace=TRUE)
> x
 [1] 3 5 1 4 5 4 2 4 1 5
> y<-plot(factor(x))
> y
     [,1]
[1,]  0.7
[2,]  1.9
[3,]  3.1
[4,]  4.3
[5,]  5.5
>x
[1] 3 5 1 4 5 4 2 4 1 5
>y y
[,1]
[1,]  0.7
[2,]  1.9
[3,]  3.1
[4,]  4.3
[5,]  5.5
很明显,域和范围都是整数,那么这个由plot返回的数字到底意味着什么,我如何才能得到平均的条高呢


当然(如果没有更优雅的解决方案),我可以迭代因子级别,计算每个元素的项数,然后取它们的平均值。此外,如果您使用
hist()
而不是
plot()
,那么解决方案非常简单:
abline(h=mean(hist(x)$counts))
添加一条水平线,只需说:

    abline(h = mean(x))
abline(h=任意值)为您提供一条水平线。abline(y=任何东西)给你一条垂直线。

我发明的(最复杂的)解决方案可能是:

abline(h=mean(unlist(lapply(min(x):max(x), function(ff) length(which(x == ff))))))
当然,只有当
x
是一个因子且级别是数字时,此解决方案才有效;否则,将
min(x):max(x)
替换为
levels(x)

(对我来说更难理解)一个更简单的解决方案似乎是(来自@Marco Sandri):


@马可·桑德里:你试过了吗?我觉得这是错误的。我不想要
x
的平均值,而是平均条高。这个命令在平均条高
abline(h=长度(x)/长度(y))处绘制一条水平线。
@Marco Sandi:所以平均值不依赖于
x
的值,而只依赖于条数?你能解释一下背后的数学吗?我还认为,建议的解决方案应该在“答案”部分提出……在您过去写的评论中,您希望在“平均栏高度”处画一条线。我的解决方案正是你所要求的。你忽略了一点,即条形图的高度不是
x
的值,而是
x
特定值的出现次数,这意味着我不会绘制
x
,而是
因子(x)
。对于给定的示例,
平均值(x)
等于
3.4
,很明显,它不可能是平均酒吧高度,因为所有酒吧都低于这个。
abline(h=length(x)/length(y))