2016-01-26 80 views
0

關於如何計算R中的直方圖有大量資源。但是,我找不到解釋如何從文件讀取現成直方圖的任何內容。 例如,我有一個文本文件:如何從r中的文件讀取直方圖?

5 0.00413341649086988 
15 0.00751482028214599 
25 0.00896480849895891 
... 

其中第一列是斷裂,合併的間隔的開始,並且第二列是具有在該箱的事件的概率。 如果我做的:

d <- read.table("input.txt") 

我得到一個錯誤,每當我用mean(d),自然是因爲R不知道d的兩列實際上是一個柱狀圖。 我想把它轉換成直方圖只是爲了方便易於計算平均值,標準偏差,ecc ... 否則,我應該做一些類似sum(d$V1*d$V2)的平均值,sqrt(sum((d$V1^2)*d$V2) - (sum(d$V1*d$V2))^2)爲標準差,等等。

+0

你說的「翻譯成柱狀圖」的意思,當

make_hist <- function(df){ his <- list() binwidth <- df$breaks[2]-df$breaks[1] # Assinging the breaks. Note that the last break is missing from the text file so we must add it his$breaks <- c(df$breaks, df$breaks[length(df$breaks)]+binwidth) his$counts <- df$counts his$density <- df$density his$mids <- df$breaks + binwidth/2 his$xname <- deparse(substitute(df)) his$equidist <- TRUE class(his) <- "histogram" return(his) } 

產生的對象會像與histogram()創建的對象,例如?除了繪製直方圖外,R並不完全具有處理直方圖的特殊功能 –

+0

如果我寫'h < - hist(...)','h'是R可以處理的直方圖(不僅是繪圖,但是也可以從密度,統計等方面區分計數)。我如何用文本文件中的數據創建一個像'h'的對象? – Nonancourt

+0

R中的類只是具有特殊'class'屬性的列表。 R中的'hist'類需要「休息」,「計數」,「密度」和「中頻」的向量。你有休息和密度,但你錯過了計數(你可以從休息屬性中獲得'mids')。現在,你需要提供計數。您的文本文件只是沒有足夠的信息。 –

回答

1

如果您的文本文件看起來像這樣:

"breaks" "dens" "counts" 
"1" 0 0.75 3 
"2" 0.2 1.25 5 
"3" 0.4 1.5 6 
"4" 0.6 0.75 3 
"5" 0.8 0.75 3 

您可以通過將相關向量到一個列表,然後指定其class屬性創建直方圖對象。這裏是做一個函數的例子:調用plot(make_hist(his_txt))