У меня есть простая таблица с уменьшающимися числами и столбцом чередующихся «да» / «нет».
dat <- data.frame(a = c(8,8,6,6,4,4,2,2),
b = rep(c("yes", "no"), 4))
| 8 | "yes"
| 8 | "no"
| 6 | "yes"
| 6 | "no"
.. goes down to 2 | "no"
Затем я создаю еще один столбец для этой таблицы для каждой строки,в зависимости от «да» или «нет» с использованием rnorm
.
dat$total_time = apply(dat, 1,
function(x) round( rnorm(1, mean=ifelse(x[2] == "yes", 140, 120), sd=10), 1))
Это дает мне таблицу, похожую на:
| 8 | "yes" | 148.3
| 8 | "no" | 135.9
etc.
То, что я сейчас хочу, это создать еще один столбец для-row и для каждой строки получить случайное число из диапазона (x-30, x), где x - это недавно созданное число в третьей строке.
Я пытался:
dat$test_time = apply(dat, 1, function(x) runif(1, x[3]-30, x[3]))
но я получаю ошибку:
Ошибка в x [3] - 30: нечисловой аргумент бинарного оператора
, если я пробую его только с
runif(1, 0, x[3])
Я все еще получаю
Ошибка в runif (1, 0, x [3]): неверные аргументы
Но когда я нажимаю наВ таблице в R studio указано, что значения в третьей строке являются числовыми, поэтому я не знаю, в чем проблема.