ifelse函数中的随机数赋值不返回预期结果?

问题描述 投票:1回答:1

我有一个带有点集合的数据集(summer2),每个点都分配了一个布尔“使用”值(0表示随机点,1表示使用点)和唯一ID(唯一ID)介于1和747之间。我想创建一个新列,“UniqueID_2”,如果它是一个使用点(使用= 1),我希望它等于UniqueID字段。如果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))
r if-statement random
1个回答
1
投票

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

ifelse(summer2$Use == 1, summer2$UniqueID, sample(727:748, length(summer2$Use), replace = TRUE)
© www.soinside.com 2019 - 2024. All rights reserved.