[英]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.