HI伙计们我正在尝试绘制一个简单的2d文件的频率图
file:data.csv
terms,count
1,10
5,17
3,28
9,30
我希望第一个col(条款)是x轴,col(count)是高度/百分比。
我试过这个:
d<-read.csv(data.csv)
hist(d)
Error in hist.default(d) : 'x' must be numeric
dc<-table(d)
hist(dc) <-- wrong result.
答案 0 :(得分:4)
问题是hist()
需要一个包含对象的向量,就像它们在数据中一样。你正在提供频率表。
见:
> df <- data.frame(obj = c(1,2,3,4,5), count = c(2,3,5,4,2))
> hist(df)
Error in hist.default(df) : 'x' must be numeric
> hist(rep(df$obj, df$count), breaks=0:5)
[img]
> rep(df$obj, df$count)
[1] 1 1 2 2 2 3 3 3 3 3 4 4 4 4 5 5
rep(a,n)
逐个元素地重复a
n
- 次的值。然后你有你需要的矢量,你可以把它交给hist()
。
答案 1 :(得分:1)
d<-read.csv(text="terms,count
1,10
5,17
3,28
9,30")
hist(d) # No error ... but not the plot you wanted.
data.csv
周围缺少引号可能是问题,或者如果文件中的第一行真的是file:data.csv
,则可能是另一个问题。但是,您确实需要barchart
或barplot
,因为您已经完成了计数的汇总。
说明为什么使用条形图或条形图 :
require(lattice)
# dividing by total "counts" to get the fractional values
barchart(count/sum(d$count)~factor(terms), data=d)