2012-07-30 39 views
1

我有以下的数据帧:řas.numeric在公式中

id<-c(1,2,3,4) 
x<-c(0,2,1,0) 
A<-c(1,3,4,3) 
df<-data.frame(id,x,A) 

现在我想使一个称为value变量的方式,如果x> 0,value每个id将等于A + 1/X,并且如果x = 0时,值将等于A. 与此目的我已经输入

value <- df$A + as.numeric(df$x > 0)*(1/df$x) 

我所期望的载体的如下:

[1] 1 3.5 5.0 3 

但是我所得到通过键入上面的命令是:

[1] NaN 3.5 5.0 NaN 

我不知道是否有人能帮助我解决这个问题。 在此先感谢!

回答

4

我认为这将是简单的在这种情况下使用功能ifelse

ifelse(df$x>0, df$A + (1/df$x), df$A) 
[1] 1.0 3.5 5.0 3.0 

详情请参阅?ifelse

并附上您尝试应用的命令,虽然as.numeric(df$x>0)确实给你的1和0(所以这是一个好主意)的载体,它并没有改变的事实,1/df$x是一个NaNdf$x等于为0(因为你不能被0除)。