我有一个列表对象,如下所示 - >
> myaggregate
input$AgeAndGender input$CTR
1 Female_<18 0.030041698
2 Female_18-24 0.010918938
3 Female_25-34 0.009839806
4 Female_35-44 0.010193773
5 Female_45-54 0.009996056
6 Female_55-64 0.020024678
7 Female_65+ 0.030060728
8 Male_<18 0.028356698
9 Male_18-24 0.011031902
10 Male_25-34 0.010218562
11 Male_35-44 0.010168911
12 Male_45-54 0.010021256
13 Male_55-64 0.020191223
14 Male_65+ 0.029717747
我试图绘制一个条形图,表示AgeAndGender(X轴)中每个值的CTR水平(Y轴)。 当我尝试一个简单的情节时,我遇到了以下问题 - &gt;
> ggplot(data= myaggregate,aes(x=input$AgeAndGender,y=input$CTR))+geom_bar()
Error in data.frame(x = c("Male_35-44", "Female_65+", "Male_25-34", "Female_45-54", :
arguments imply differing number of rows: 3378934, 14
我确定我错过了一些非常基本的东西。任何帮助表示赞赏!
答案 0 :(得分:3)
如果您只是想绘制值,那么您需要stat="identity"
,如下例所示:
library(ggplot2)
AgeAndGender <- c("f1","f2","f3")
CTR <- c(.1,.15,.12)
myaggregate <- data.frame(AgeAndGender, CTR)
ggplot(data= myaggregate,aes(x=AgeAndGender, y=CTR)) + geom_bar(stat = "identity")
结果如下:
查看您对列表中数据的评论让我感到担忧。尝试将myaggregate
设为数据帧。
答案 1 :(得分:0)
我能够用你正在使用的东西进行绘图,但这是一个相当奇怪的结构。数据帧通常在名称中没有美元符号,因为$
是R中的中缀函数。我使用read.table
读取数据并将美元符号转换为句点。我把它们放回原来的列名:
names(myaggregate) <- c('input$AgeAndGender', 'input$CTR')
然后你可以得到一个相当混乱的条形图:
ggplot(data= myaggregate,aes(x=`input$AgeAndGender`,y=`input$CTR`))+ geom_bar(stat = "identity")
当您刚放入代码时,未引用的名称会被解释为x是input
数据框中的“AgeAndGender” - 列。如果你只使用普通的引号而不是反引号,你就不会成功。