Цель интервала неясна, и на ваш перестановочный вопрос об интервале, возможно, будет дан ответ с помощью функции sample () ниже, которая случайным образом выберет распределение 1 и 0.Вы также можете отрегулировать вероятности изменения, выбрав 0 или 1, здесь это 50/50%.Кроме того, если вы хотите получить случайную выборку, но для того, чтобы убедиться, что ваш код повторяется, вы можете принудительно использовать случайную начальную величину в своем сеансе, чтобы каждый раз рисовать одну и ту же перестановку с помощью: set.seed(123456)
, выбирая любое начальное число, которое вы считаете подходящим.
sample(x=c(0,1),size=359,replace=T,prob=c(0.5,0.5))
В качестве альтернативы, ваш вопрос может предлагать установить значения, равные 1, для определенного индекса.Здесь для вашего примера 147,65,10,251 вы можете сделать:
intervals <- rep(0,359)
intervals[c(147,65,10,251)] <- 1
Или, может быть, так?
intervals <- rep(0,359)
intervals[sample(c(147,65,10,251))] <- 1
Поскольку это вопрос из двух частей и ответ на вашПроблема записи Excel: у вас есть файл write.xlsx, вызванный из цикла for, то есть вы записываете файл в каждом циклеЭто может или не может быть поведение, которое вы хотите?Я предполагаю, что запись всего набора данных предпочтительнее.Однако если вы укажете file [i] в качестве выходных данных, а ваша переменная file будет одним значением (или вектором одной длины), вы получите ошибки.Вы измените это в файле write.xlsx на write.xlsx(x,paste0("my_file_num",i,".xlsx"), ...
или переместите вызов за пределы цикла, как показано ниже
file <- "C:/Users/me/Desktop/pp.xlsx"
ts=my_data[6]
ts=unlist(ts)
samples <- NULL
for (i in 1:100){
diff.ts<-diff(ts)
x=sample(diff(which(diff.ts==1)))
samples <- append(samples,list(samples=x))
print(x)
}
write.xlsx(samples,file, sheetName = "Sheet1",col.names=TRUE, row.names=FALSE, append=FALSE, password=NULL)