繁体   English   中英

试图在R中建立预测模型

[英]Trying to make a prediction model in R

在编程的最后几天收集了几个问题。 尝试制作一个可以预测我工作5年后能赚多少钱的程序。 一个问题是,当我尝试从零钱中取出钱时。

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

然后,它给出以下错误:“二进制运算符的非数字参数”

我想使用功能“摘要”从每年提取信息,但是它实际上并没有工作...它只是显示:

长度等级模式[1,] 100-无数字

最后,我想预测我将获得多少假期。 该图有效,但我想在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?

当您调用moneyover.year[i] = blah blah blah时,您会收到错误消息,因为您尚未初始化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个元素中的值。 如:

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

由于上面的所有三个对象都是列表,因此将它们初始化为列表而不是NULL值可能会引起混淆,例如:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM