我正在尝试在名为“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的长度是什么。
答案 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)))