【问题标题】:Error: argument "x" is missing, with no default错误:缺少参数“x”,没有默认值
【发布时间】:2017-12-09 15:37:26
【问题描述】:

我收到一个错误:缺少参数“x”,没有默认值 调试后,我发现这是在行中: MyData1<- MyData()[,c(col(),col()+1)] 我试图将参数作为单个向量传递,例如 MyData1<- MyData()[,p=c(col(),col()+1)]

错误:[.data.frame 中的错误:未使用的参数 (p = c(col(), col() + 1))

这只是我实际代码中的一个 sn-p:

TotalTS<-ts(MyData()[,Col()],start=Start(),frequency = Fre())
    InsampleTs<-window(TotalTS,start = c(Start(),1),end=c(2017,5))
    TotalTS1<-ts(MyData()[,Col()+1],start=Start(),frequency = Fre())
    InsampleTs1<-window(TotalTS1,start = c(Start(),1),end=c(2017,5))

    MyData1<- MyData()[,c(col(),col()+1)]
    MyData1$util1<-MyData1[,1]*100/MyData1[,2]
    popj<-nrow(MyData())-length(InsampleTs)


    if(input$F6==1){
      if(input$AM==1){

        forecast32<-hw(InsampleTs,h=Col1(),level = input$CI2)
        forecast32_1<-hw(InsampleTs,h=Col1(),level = input$CI2)

        c<-as.matrix(forecast32$x)
        d<-as.matrix(forecast32_1$x)

        c1<-as.matrix(forecast32$fitted)
        d1<-as.matrix(forecast32_1$fitted)
        util2<-(c1*100)/d1
        util1<-(c*100)/d
        c11 <- as.matrix(forecast32$mean[1:popj])
        d11<- as.matrix(forecast32_1$mean[1:popj])
        c12 <- as.matrix(forecast32$lower[1:popj])
        d12<- as.matrix(forecast32_1$lower[1:popj])
        c13 <- as.matrix(forecast32$upper[1:popj])
        d13<- as.matrix(forecast32_1$upper[1:popj])

        c111 <- c11*100/d11
      c112<- c12*100/d12
        c113 <- c13*100/d13
        MyData1$util2 <- util2
        MyData1 <- MyData1[,c(col(),col()+1)]

        e<-as.matrix(forecast32$mean[-c(1:popj)])
        f<-as.matrix(forecast32_1$mean[-c(1:popj)])
        e2<-as.matrix(forecast32$upper[-c(1:popj)])
        f2<-as.matrix(forecast32_1$upper[-c(1:popj)])
        e1<-as.matrix(forecast32$lower[-c(1:popj)])
        f1<-as.matrix(forecast32_1$lower[-c(1:popj)])

        e111 <- e*100/f
        e113<- e2*100/f2
        e112 <- e1*100/f1

       r<- cbind(e111,e112,e113)
       colnames(r) <- c("Predicted","lower Limit","Upper Limit")

        MyData1 <- ts(MyData1,start=c(Start(),1), end=c(2017,5), frequency=Fre())
        #r<-ts(r,start=c(2017,6),end=c((Hstar()+2),Fre()))
        r<-ts(r,start=c(2017,6),end=c(2019,6), frequency = 12)
        autoplot(ts( cbind(r,MyData1),start = c(Start(),1),frequency=Fre() ),facets = F)
        }**strong text**

【问题讨论】:

  • 什么是col()?那是你写的函数吗?那是一个反应对象吗?从您的代码块中不清楚。请确保在您的问题中提供 [可重现的示例]stackoverflow.com/questions/5963269/…,其中包含我们可以实际运行和测试的示例数据。
  • 是的,Col() 是一个反应对象。即使尝试手动输入数字,它也会给出相同的错误。
  • 您已经定义了col()Col()? (R 区分大小写)。
  • MyData() 是要上传的表,Col() 是输入列号的选项,希望探索。
  • col 是基础 R 中的一个函数。因此,当您使用 col() 时,该函数正在寻找一个参数 x 而没有找到它。我建议使用更具描述性的变量名称或将所有反应值存储在 reactiveValues(...) 列表中。

标签: r rstudio shiny shinydashboard


【解决方案1】:

查看您的代码并跟踪到MyData1 的步骤顺序,我确定了以下几行:

  1 c1<-as.matrix(forecast32$fitted)
  2 d1<-as.matrix(forecast32_1$fitted)
  3 util2<-(c1*100)/d1
  4 MyData1$util2 <- util2
  5 MyData1 <- MyData1[,c(col(),col()+1)]

假设MyData 是一个已经作为矩阵或data.frame 存在的对象,问题是因为您没有为Extract 运算符提供指定要提取的行或列的索引。相反,您传递了 col 函数,但没有指定要使用的类似矩阵的对象。

 5 MyData1 <- MyData1[,c(col(),col()+1)]

应该是

5 MyData1 <- MyData1[,c(col(x),col(x)+1)]

但是,我必须问,您想通过这个子集操作来完成什么?也许有一个更优雅、更紧凑的解决方案,它比使用 col 函数指定要从 MyData1 中提取的列更简洁。

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 2021-09-17
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-29
    相关资源
    最近更新 更多