【发布时间】:2019-11-04 18:29:30
【问题描述】:
我有一个带有数值变量和因子变量的数据框,如下所示:
set.seed(123)
df <- data.frame(
numbers = c(rnorm(50, 3), runif(50)),
levels = sample(LETTERS[1:5], 100, replace = T)
)
我想做的是一个条形图,它绘制df$numbers反对df$levels 并且插入代表每个级别平均值的垂直线段。
stripchart(df$numbers ~ df$levels, method = "jitter")
显然,我可以分别为每个级别插入均值行,例如:
segments(x0 = mean(df$numbers[df$levels=="A"]), y0 = 1-0.3, y1 = 1+0.3, col = "red" )
对于所有其他级别等等,如果您有多个级别,这会很乏味。所以我试过这个forloop:
for(i in seq(unique(df$levels))){
segments(x0 = mean(df$numbers[df$levels==i]),
y0 = i - 0.3,
y1 = i + 0.3,
col = "red", lty = 3, lwd = 2)
}
但这不会打印任何东西(也不会引发错误)。插入均值段的最简洁和最简单的代码是什么?
【问题讨论】:
-
我以前试过这个;它产生一个错误:
Error in i - 0.3 : non-numeric argument to binary operator
标签: r for-loop stripchart