R as.numeric在公式中

时间:2012-07-30 09:31:55

标签: r

我有以下数据框:

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)

我期望的是一个矢量a:

[1] 1 3.5 5.0 3

然而,输入上述命令我得到的是:

 [1] NaN 3.5 5.0 NaN  

我想知道是否有人可以帮我解决这个问题。 提前谢谢!

1 个答案:

答案 0 :(得分: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的事实当NaN等于0时({1}}是df$x,因为你不能除以0。