功能错误:R中的行数不同

时间:2017-04-17 22:13:13

标签: r

创建一个函数以提供行业类型以提取相应的频率,并且我不断收到同样的错误:

  Error in data.frame(mainDF, avg, med) : 
  arguments imply differing number of rows: 112, 0

这是我的功能 -

lossdfFunc <- function(x) {
  indRel <- severity[severity$industryType == 'x',]
  weightPercent <- indRel$relsev

  avg <- (mainDF$Amount/mainDF$Count)*weightPercent
  avg <- dec_amt(avg, 2)
  med <- mainDF$medAmount*weightPercent

  lossesDF <- data.frame(mainDF, avg, med)

  return(lossesDF)
  }

如果我逐行运行这个函数,它的工作原理非常好,它只会为数据帧的最后几行输入NA,这些行不具有med列的medAmount值(这就是我&# 39; d like)。

mainDF基本上看起来像:

damageType Year Count     Amount medAmount
RR         2000 4         10000  5000
RR         2001 2         50210  125019
CD         2000 5         55000  159801
CD         2001 1         25000  12901
PI         2000 15        100    152098
PI         2001 20        15200  77655
TD         2000 7         50000  NA
TD         2001 11        12511  NA

severityDF看起来像:

                      industryType  relfreq   relsev
  1              Consumer Products 2.032520 0.419048
  2                 Biotech/Pharma 0.650407 3.771429
  3        Industrial/Construction 1.327913 0.609524
  4  Computer Hardware/Electronics 1.571816 2.019048
  5                Medical Devices 1.463415 3.028571
  6                       Software 0.758808 1.314286

我的理想输出(如果我逐行输入,我得到的输出)是(这假设软件插入了lostdfFunc中的x):

       Amount medAmount     avg          med
     1  10000      5000     13142.8600     6571.43
     2  50210    125019     65990.3001   164310.72
     3  55000    159801     72285.7300   210024.22
     4  25000     12901     32857.1500    16955.60
     5    100    152098       131.4286   199900.27
     6  15200     77655     19977.1472   102060.88
     7  50000        NA     65714.3000          NA
     8  12511        NA     16443.0321          NA

我无法帮助,但认为问题可能出在第一行

      indRel <- severity[severity$industryType == 'x',]

因为当我在软件中键入x并重新运行该函数时,它通过向我提供软件数据帧完全正常。但如果我把它保留为x,输入lossdfFunc(软件),我会得到关于不同行的上述错误。

0 个答案:

没有答案