Это связано с тем, что бит if ( j == 1 )
предназначен для проверки того, что вы впервые записали файл или нет.
Если равен в первый раз, тоон будет записывать имена столбцов (то есть X
, Y
, Z
, p
) в файл (см. col.names=TRUE
?).
Если это не в первый раз, тогда он не будет записывать имена столбцов, а просто добавит данные.
Поскольку у вас есть несколько вложенных циклов, это условие не будет работать, поэтомухорошо для вас: когда j==1
(то есть для prob=0.1
) вы выполняете 4 других цикла внутри.Но начиная с j==1
, данные каждый раз перезаписываются.
Я бы порекомендовал инициализировать переменную count
, которая подсчитывает, сколько раз вы выполнили Simulation
, а затем изменить эту строку на if ( count == 1 )
:
count <- 1
prob <- c(0.10,0.20)
# .... code as before
data <- Simulation(X =1,Y =range[i], Z=sample[k] ,p = prob[j])
if ( count == 1 ) {
write.table(data, "Desktop/file2.txt", col.names=T)
} else {
write.table(data, "Desktop/file2.txt", append=T, col.names=F)
}
# increment count
count <- count + 1
}}}