创建一个函数,将n <5的值替换为1到4之间的一个随机数(整数)

时间:2019-05-15 20:40:50

标签: r dataframe replace

我对R很陌生,遇到了一个我似乎无法自行解决的问题。您应该很容易。

我打算写一个通用函数来操纵数据帧df中的列n。我希望它执行一个简单的任务,对于每一行,当n <5时,应使用1到4之间的随机数替换该值。

df <- data.frame(n= 1:10, y = letters[1:10],
                 stringsAsFactors = FALSE)

最优雅的解决方案是什么?

1 个答案:

答案 0 :(得分:3)

一种方法是基于列创建逻辑索引,基于索引对列进行子集并分配sample d值

f1 <- function(dat, col) {
      i1 <- dat[[col]] < 5
      dat[[col]][i1] <- sample(1:4, sum(i1), replace = TRUE)
      dat
  }

f1(df, "n")