Я не смог получить именно тот результат, который вы хотели, но, возможно, смогу немного помочь вам.
При зацикливании в R вектор, через который вы зацикливаетесь, остается неизменным, и значение, которое вы используете для зацикливания изменений.Например, посмотрите на различия в этих циклах:
test <- seq(0,1,length.out = 5)
for ( i in test){
print(test)
}
for ( i in test){
print(i)
}
for ( i in 1:length(test)){
print(test[i])
}
при выполнении итерации сначала вы устанавливаете i
для первого числа в p
, затем для первого числа в k
и затем используетенеизмененные векторы.
Вы также присваиваете z в первом цикле p
, а затем записываете его во втором цикле.
Попробуйте использовать приведенное ниже - я все еще не получаю ответ, который вы говоритено это может помочь вам найти причину ошибки (распечатка по пути или использование debug(victory)
также может быть полезным
victory <- function(n,k,p){
z <-list()
for (i in 1:length(p)) {
x <- 0
for (j in 1:length(k)) {
x <- x + choose(n, k[j]) * p[i]^k[j] * (1-p[i])^(n-k[j])
}
z[i] <- x
}
return(z)
}