我试图运行以下代码:
temp_plotdata <- data.table(Treatment_Code = c('Control', 'Control',
'Second Mailing', 'Second Mailing',
'First Mailing', 'First Mailing'),
Q9 = c(9, 14, 10, 3, 1, 4))
output_gg <-
ggplot(temp_plotdata, aes(x = Q9)) +
geom_histogram(binwidth = 1, fill = 'lightblue') +
geom_vline(data = temp_plotdata[, summary(Q9)[c(2,3,5)], by=Treatment_Code],
aes(xintercept = V1),
linetype = 'dashed', color = 'darkred') +
facet_wrap(~Treatment_Code, ncol = 1)
我收到了一个错误:
Error in provideDimnames(x, sep = sep, base = base) :
‘dimnames’ applied to non-array
我知道问题出现在代码的geom_vline部分,因为当我运行它没有那些行或者用geom_vline(xintercept = c(3,5,8)之类的东西运行它时它工作正常.我还尝试首先将geom_vline中的数据转换为单独的数据帧,但它不起作用.
我去年运行了一段非常相似的代码并且工作正常,所以我不确定geom_vline是否发生了变化,或者由于新数据或我可能偶然发生的一些小变化,我的代码是不正确的.
谢谢你提供的所有帮助.
最佳答案 发生这种情况是因为V1的类(data.table返回的汇总列)是表,而不是数字向量.将其更改为矢量,它应该工作.
output_gg <-
ggplot(temp_plotdata, aes(x=Q9)) +
geom_histogram(binwidth=1, fill='lightblue') +
geom_vline(data=temp_plotdata[, as.vector(summary(Q9)[c(2,3,5)]), by=Treatment_Code],
aes(xintercept=V1),
linetype='dashed', color='darkred') +
facet_wrap(~ Treatment_Code, ncol=1)
比较前后数据帧的结构:
str(temp_plotdata[, summary(Q9)[c(2,3,5)], by=Treatment_Code])
06002
str(temp_plotdata[, as.vector(summary(Q9)[c(2,3,5)]), by=Treatment_Code])
06004