ifelse函数中的随机数分配未返回预期结果吗?

时间:2019-04-11 17:15:36

标签: r if-statement random

我有一个数据集(summer2),该数据集包含点的集合,每个点都被分配了一个布尔“使用”值(0表示随机点,1表示使用点),以及一个介于1到747之间的唯一ID(UniqueID)。想要创建一个新列“ UniqueID_2”,如果该列是已使用的点(使用= 1),我希望它等于“唯一ID”字段。如果Use = 0,我想在728-747之间分配一个新的随机ID号。

我有一个ifelse函数,其中的样本函数作为第三个参数嵌套在其中,当我运行它时,我从348-736获得值,而每个值都应在728-747之间。

我对R很陌生,所以我认为这是语法错误,或者我只是使用了不合适的函数。

summer2["UniqueID_2"]
summer2$UniqueID_2 = ifelse(summer2$Use == 1, summer2$UniqueID, sample(727:748, 1))

1 个答案:

答案 0 :(得分:1)

您传递给ifelse的第三个参数应该是与其他两个参数相同长度的向量,否则将导致回收(当回收一个随机数时会产生违反直觉的结果)。您需要:

ifelse(summer2$Use == 1, summer2$UniqueID, sample(727:748, length(summer2$Use), replace = TRUE)