Я написал этот цикл, чтобы извлечь имена каждого элемента вектора, который встречается в течение интервала времени (bin). Я задавался вопросом, не хватает ли у меня более быстрого способа сделать это ... Я хочу реализовать аспект рандомизации для векторов длиной 1000 и, следовательно, не хочу полагаться на цикл.Извлечение имен вектора по времени bin
mydata <- structure(c(1199.91666666667, 1200.5, 1204.63333333333, 1205.5,
1206.3, 1208.73333333333, 1209.06666666667, 1209.93333333333,
1210.98333333333, 1214.56666666667, 1216.06666666667, 1216.63333333333,
1216.91666666667, 1219.13333333333, 1221.35, 1221.51666666667,
1225.35, 1225.53333333333, 1225.96666666667, 1227.61666666667,
1228.91666666667, 1230.31666666667, 1233.53333333333, 1235.8,
1237.51666666667, 1239.41666666667, 1241.6, 1247.08333333333,
1247.45, 1252.7, 1253.26666666667), .Names = c("B", "A", "B",
"E", "A", "A", "B", "G", "G", "C", "A", "D", "E", "B", "B", "E",
"E", "G", "F", "A", "C", "A", "F", "B", "A", "F", "F", "G", "F",
"G", "F"))
mydata
B A B E A A B G G C A D E B B E E
1199.917 1200.500 1204.633 1205.500 1206.300 1208.733 1209.067 1209.933 1210.983 1214.567 1216.067 1216.633 1216.917 1219.133 1221.350 1221.517 1225.350
G F A C A F B A F F G F G F
1225.533 1225.967 1227.617 1228.917 1230.317 1233.533 1235.800 1237.517 1239.417 1241.600 1247.083 1247.450 1252.700 1253.267
Они представляют собой последовательные времена в секундах событий. Скажем, мы хотим сделать наши интервалы длинными. Мой подход, чтобы сделать вектор в начале каждого интервала, а затем использовать цикл, чтобы найти имена элементов, входящих в пределах этого интервала:
N=5
ints <- seq(mydata[1], mydata[length(mydata)], N)
out<-list()
for(i in 1:length(ints)){
out[[i]] <- names(mydata[mydata>=ints[i] & mydata<ints[i]+N])
}
out
[[1]]
[1] "B" "A" "B"
[[2]]
[1] "E" "A" "A" "B"
[[3]]
[1] "G" "G" "C"
[[4]]
[1] "A" "D" "E" "B"
[[5]]
[1] "B" "E"
[[6]]
[1] "E" "G" "F" "A" "C"
[[7]]
[1] "A" "F"
[[8]]
[1] "B" "A" "F"
[[9]]
[1] "F"
[[10]]
[1] "G" "F"
[[11]]
[1] "G" "F"
Это хорошо для небольших образцов - но я могу видеть, это было бы получить медленный при работе с очень большими образцами, которые перестраиваются 1000 раз.
Я сделал хороший опыт ускоряя аналогичные проблемы с 'findInterval'. – mts
или используйте 'cut' или' hmisc :: cut2' –
Чтобы получить представление о требуемой производительности: сколько «очень больших выборок» и как часто приходится применять логику группировки «временного бина» («перестановленные 1000s времени")? –