创建一个函数以提供行业类型以提取相应的频率,并且我不断收到同样的错误:
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(软件),我会得到关于不同行的上述错误。