作者empireisme (empireisme)
看板R_Language
标题[问题]用shiny来作图(无法发布)本机端可以动
时间Tue Mar 10 01:30:15 2020
我心血来潮写了一个可以简易计算储蓄险的function
require(ggplot2)
#year <- 20 #你要缴纳几年
#restyear <- 40 #缴完後还可以活多久
#yearget <- 12 #一年得到多少钱
#yearpay <- 10 #一年缴多少钱
#rate <- 0.02 #你认为的市场利率
npvplot <- function(yearpay=10,yearget=12,rate=0.02,year=20,restyear=40
){
npv<-function(yearpay=10,yearget=12,rate=0.02,year=20,restyear=40){
benefit<- sum( yearget/ ( (1+rate)^seq(year-1, year+restyear-1) ) )
cost <- sum ( yearpay/ ( (1+rate)^seq(0, year-1 ) ) )
return( benefit-cost )
}
benefit <- vector("numeric",length = 50)
for(i in 1:50){
benefit[i]<- npv(yearpay=10,yearget=12,rate=0.02,year=20,i)
}
restlife <- c(1:50)
dat <- data.frame(restlife,benefit)
qplot(restlife,benefit,geom = "line")
}
npvplot()
这个function会画出 缴费完後每多活一年,NPV的净值会如何变化的图
但是我想把它做成shiny
但是不知道为何没又error但是画出来的图形都是一条水平线
library(plotly)
library(shiny)
library(ggplot2)
ui <- fluidPage(
titlePanel(title=h4("简易储蓄险NPV计算()", align="center")),
actionButton("go", "Go"),
numericInput("yearpay", "一年要缴多少钱(万)", 10),
numericInput("year", "要缴几年", 20),
numericInput("yearget", "期满後一年可得的报酬(万)", 12),
numericInput("restyear", "期满後预期可活几年", 40),
numericInput("rate", "你认为的通货膨胀率", 0.02),
plotOutput("plot")
)
server <- function(input, output) {
npvplot <- function(yearpay,yearget,rate,year,restyear){
npv<-function(yearpay,yearget,rate,year,restyear){
benefit<- sum( yearget/ ( (1+rate)^seq(year-1, year+restyear-1) ) )
cost <- sum ( yearpay/ ( (1+rate)^seq(0, year-1 ) ) )
return( benefit-cost )
}
benefit <- vector("numeric",length = 50)
for(i in 1:50){
benefit[i]<- npv(yearpay,yearget,rate,year,i)
}
restlife <- c(1:50)
dat <- data.frame(restlife,benefit)
return(dat )
#qplot(restlife,benefit,geom = "line")
}
value<- eventReactive(input$go, {
npvplot(input$yearpay,input$year,input$yearget,input$restyear,input$rate)
})
output$plot <- renderPlot({
ggplot(value(),aes(x=restlife,y=benefit))+geom_line()
})
}
shinyApp(ui, server)
想请问各位大神是哪里出错了
附上改正
https://pastebin.com/K6NA8DUL
目前是local可以动 但是无法发布 出现 error
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 219.91.75.186 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/R_Language/M.1583775019.A.83D.html
1F:→ cywhale: 你输入的顺序和你的function顺序错了,改一下就可以03/10 11:56
2F:→ andrew43: 图没错。你的npvplot()就是回传这样的dataframe。03/10 11:59
3F:→ cywhale: ..input$yearget,input$rate,input$year,input$restyear,03/10 12:02
附上改正的程式码
https://pastebin.com/K6NA8DUL
後来改正後就可以用了 真的是顺序错误 但是我发现 本地端可以用 却无法发布
The application failed to start (exited with code 1).
Error in value[[3L]](cond) : there is no package called ‘plotly’
Calls: local ... tryCatch -> tryCatchList -> tryCatchOne -> <Anonymous>
停止执行
出现这个error 请问该如何处理
我有装plotly阿
※ 编辑: empireisme (219.91.75.186 台湾), 03/10/2020 13:08:01
※ 编辑: empireisme (219.91.75.186 台湾), 03/10/2020 13:23:15
※ 编辑: empireisme (219.91.75.186 台湾), 03/10/2020 13:32:21
我发现没有中文就可以
但只有英文的话可以成功
想请问该如何处理
※ 编辑: empireisme (219.91.75.186 台湾), 03/10/2020 14:19:43