Создайте функцию, которая заменяет значения, где n <5, случайным числом от 1 до 4 (целое число)

Я новичок в R и столкнулся с проблемой, которую, по-видимому, не могу решить самостоятельно. Это должно быть довольно легко ты.

Я стремлюсь написать обобщенную функцию, которая управляет столбцом n в фрейме данных df. Я хочу, чтобы он выполнял простую задачу для каждой строки, когда n <5, он должен заменить это значение случайным числом от 1 до 4.

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

Какое самое элегантное решение?

Всего 1 ответ


Один из способов сделать это - создать логический индекс на основе столбца, создать подмножество столбца на основе индекса и назначить значения sample d.

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

f1(df, "n")