用户定义函数出错

时间:2015-05-11 12:50:36

标签: r function if-statement

我在以下数据集中使用了用户定义的函数:

Pos      
A
B
C
A
C
B

我创建了以下函数来向数据集添加变量。

Predict <- function(Uncontested.REB.per.game, STL.per.game, BLK.per.game, Opp.FGA.at.rim.per.game, PTS.per.game, Passes.per.game, log.Points.created.by.assist.per.game, sqrt.Drives.Per.Game, Pos){
if (Pos=="A"){
Pred = 1}
  else if(Pos=="B"){
Pred=4}
else if(Pos=="C"){
Pred=5
}
}

当我使用以下命令时:     数据&lt; - 变换(数据,Pred =预测(Pos)

我收到错误“条件长度> 1且只使用第一个元素”。我认为它与使用“if”语句有关,我想要应用于每一行而不是一个元素,所以我也尝试了上面代码的变体:

Predict <- function(Pos){
if (Pos=="B" && Pos!="A"){
Pred = 1}
  else if(Pos=="A"&&Pos!="B"){
Pred=4}
else if(Pos=="C" && Pos!="A"){
Pred=5
 }
 }

然而,尽管位置不同,这只是在所有行中为Pred设置了相同的值。

1 个答案:

答案 0 :(得分:1)

你应该对你的功能进行矢量化。例如,使用ifelse更改条件语句:

Predict <- function(Pos){   
   Pred <- ifelse(Pos=="A",1,ifelse(Pos=="B",4,5))
   Pred
}