2015-05-16 83 views
0

在編程的最後幾天收集了幾個問題。試圖制定一個計劃,預測我工作5年後獲得多少錢。 一個問題是,當我試圖把錢拿出去的錢。試圖在R中預測模型

moneyover.year[i] = moneyin.year[i] - moneyout.year[i] 

然後給出了這樣的錯誤:「非數字的參數,以二進制運算符」

我想從每年與功能「摘要」中提取信息,但它並沒有真正工作..它只是顯示:

Length Class Mode [1,] 100 -none- numeric

最後我想預測我會得到多少假期。 圖表工作正常,但我想在y軸上獲得百分比符號。 最好是一個帶有直方圖的平滑曲線。

下面是完整的代碼:

library(ggplot2) 
library(mc2d) 
library(scales) 
moneyin.year= NULL # Is there a work around this? 
moneyout.year= NULL # Is there a work around this? 
moneyover.year = NULL # Is there a work around this? 
n=100 

for (i in 1:5) { 
    moneyin.year[i] <- list(rpert(n, min=20000, mode=23000, max=30000, shape=30)) 
    moneyout.year[i] <- list(rpert(n, min=10000, mode=12500, max=19500, shape=20)) 
    moneyover.year[i] = moneyin.year[i] - moneyout.year[i] # GIVES ERROR! 
} 
moneyin.year 
moneyout.year 
moneyover.year # GIVES ERROR! 

#graph = moneyover.year[1] 
graph = moneyin.year[1] 
summary(graph) # Doesnt really work... 
sd(graph) # GIVES ERROR! 
var(graph) # GIVES ERROR! 

p <- ggplot(data.frame(graph), aes(x = graph)) 
p <- p + geom_bar(aes(y = (..count..)/sum(..count..)), color="black", binwidth = 500, fill = "steelblue") 
p <- p + scale_y_continuous(labels = percent) 
p <- p + xlab("EUR") + ylab("Percent") 
p <- p + theme_bw() 
print(p) 


extraholidays = dpois(20:50,30) 
barplot(extraholidays,names=20:50,xlab='Days',ylab='Percentage') 
# How to get "%" sign??? 
# How to get a smooth line? 
+1

歡迎StackOverflow的:

moneyover.year[[i]] = moneyin.year[[i]] - moneyout.year[[i]] 

由於上述所有三個對象是列表,它可能保存在混亂給他們作爲初始化列表而不是NULL值,如!這個問題不是[可重現的](stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example),因爲缺少一些函數定義(例如'rpert'),並且它是在不知道你的代碼做什麼的情況下很難幫助。如果是用戶定義的問題,請包含對'library'或'rpert'定義的調用。 – Jthorpe

+0

對不起!幾天前我開始在R中編程。現在他們被包括在內。 – crystal

回答

1

,當你調用​​因爲你沒有初始化moneyover.year,你不能拿走或分配給不向量的子集,你得到一個錯誤還存在。 (你創建了moneyover而不是moneyover.year ...)。

動初始化只是編程的事實,但你可以使用多個任務同時進行初始化幾個變量,如:

moneyin.year <- moneyout.year <- moneyover.year <- NULL 

第二個錯誤有有R的類型轉換做。具體而言,在for循環的第一次迭代中,此行moneyin.year[i] <- list(blah blah blah)強制moneyin.year列表。這是當這條線被評估的問題:

moneyover.year[i] = moneyin.year[i] - moneyout.year[i] 

因爲單括號運算符([)返回一個子表,而不是列表的第一個元素。這是一個問題,因爲沒有爲列表定義減號運算符(-)(因此,有些非直觀的錯誤「二元運算符的非數字參數」)。相反,您要使用雙括號運算符([[),它返回存儲在列表的i'th元素中的值。如:

moneyin.year <- moneyout.year <- moneyover.year <- list() 
+0

確實如此,即使有了moneyover.year,它也會出現錯誤。 – crystal

+0

查看修改錯誤修復程序 – Jthorpe

+0

感謝! 彙總(圖表)錯誤通過彙總(unlist(moneyover.year))解決。現在除了最後兩個問題之外,所有事情都快完成了那就是:「如何得到」%「符號以及如何在泊松分佈中獲得一條平滑線,你知道如何解決它們嗎? – crystal