Я ищу векторное решение. Скажем, я сгенерировал 100 выборок из 10 ничьих с заменой. Затем я хочу найти первый индекс первого элемента матрицы совокупных сумм, что означает некоторое условие, скажем,> = 10. Затем я хочу суммировать все элементы каждой строки до тех пор, пока индекс первого элемента не будет соответствовать этому условию. MWE:R Векторизация: как вернуть индекс первого элемента каждой строки в матрице, которая удовлетворяет условию и суммировать все элементы до этого индекса?
set <- c(1, 5, 7, 13, 15, 17)
samp <- samp <- matrix(sample(set, size = 100*10, replace = TRUE), nrow=simCount) # generate 100 samples of 10 draws
b <- matrix(apply(samp, 1, cumsum),
nrow = 100, byrow=TRUE) >= 10 # compare each element with 10, return boolean
Я не уверен, как использовать apply
с which(x)=="TRUE"
. Я попробовал несколько вариантов, но я не уверен, как правильно это сделать.
После того как я получу это, я смогу использовать apply(b, 1, min)
, чтобы вернуть первый элемент (минимальный индекс) для каждой строки, которая равна = 10.
Существует опечатка в вашем MWE. Пожалуйста исправьте. –
@Pascal исправлено, спасибо – user2205916
Сначала ваш образец с 'rep' неверен в соответствии с описанием. Возможно использование: 'samp <- matrix (sample (c (seq (1,5,1)), size = 1000, replace = TRUE), nrow = 100)' – N8TRO