ifelse r - x和y长度不同

时间:2017-06-27 09:38:49

标签: r if-statement apply

我正在尝试在名为“OutComes”的数组上使用ifelse,但它给了我一些麻烦。

>  PersonNumber Risk_Factor OC_Death OnsetAge Clinical CS_Death Cure AC_Death
>[1,]            1           1 99.69098       NA       NA       NA   NA       NA
>[2,]            2           1 60.68009       NA       NA       NA   NA       NA
>[3,]            3           0 88.67483       NA       NA       NA   NA       NA
>[4,]            4           0 87.60846       NA       NA       NA   NA       NA
>[5,]            5           0 78.23118       NA       NA       NA   NA       NA

现在我将尝试使用apply来分析此表的Risk_Factor列并应用两个函数之一来替换OnsetAge列的NA。

我一直在使用apply函数 -

apply(OutComes, 1, function(x)ifelse(OutComes[,"Risk_Factor"] == 1, 
                                      HighOnsetFunction(x), OnsetFunction(x))

然而,这显然不会起作用,因为ifelse本身不起作用。错误是 -

  

xy.coords(x,y)出错:'x'和'y'长度不同

我不确定这个ifelse中发生了什么,或x和y的长度是什么。

1 个答案:

答案 0 :(得分:1)

您的申请功能有误。你正在使用参数x(一行OutComes)应用一个函数,但是然后在ifelse中使用向量OutComes [,“Risk_Factor”],它是原始矩阵的一列,而不是一个数字。一个简单的解决方案就是

apply(OutComes, 1, function(x) ifelse(x["Risk_Factor"] == 1, 
                 HighOnsetFunction(x), OnsetFunction(x)))

但是在处理标量时,没有必要使用ifelse,所以编写它可能更有效

apply(OutComes, 1, function(x) if (x["Risk_Factor"] == 1) HighOnsetFunction(x) else OnsetFunction(x)))