Я хочу, чтобы r организовал / слил мои повторные образцы в векторе - PullRequest
0 голосов
/ 21 сентября 2019

У меня есть вектор от 1 до 10, который я разделил на блоки размером 2 каждый, а затем заново сэмплировал блоки, но я не доволен расположением результата в r.код r ниже демонстрирует мой опыт:

ts <- 1:10 # generate a number from 1 to 10
bs <- 2 # let block size equals 2
nb <- length(ts) / bs # number of blocks
blk <- split(ts, rep(1:nb, each=bs)) # split  the generated numbers into "blk"
res<-sample(blk, replace=T, 20) # resample the blk 20 times with replacement
res # gives me the below result

#$`5`
#[1]  9 10

#$`5`
#[1]  9 10

#$`5`
#[1]  9 10

#$`3`
#[1] 5 6

#$`1`
#[1] 1 2

#$`2`
#[1] 3 4

#$`5`
#[1]  9 10

#$`1`
#[1] 1 2

#$`1`
#[1] 1 2

#$`1`
#[1] 1 2

#$`4`
#[1] 7 8

#$`4`
#[1] 7 8

#$`4`
#[1] 7 8

#$`4`
#[1] 7 8

#$`4`
#[1] 7 8

#$`3`
#[1] 5 6

#$`2`
#[1] 3 4

#$`1`
#[1] 1 2

#$`1`
#[1] 1 2

#$`1`
#[1] 1 2

Я скорее хочу получить такой результат, как:

(9,10,9,10,9,10,5), 6,1,2,3,4,9,10,1,2,1,2,1,2,7,8,7,8,7,8,7,8,7,8,5,6, 3,4,1,2,1,2,1,2)

, так что я могу назвать «res» как одномерный, и я смогу записать результат в одну строку или один столбецCSV-файл, как это:

write.csv(res, "resamples.csv")

1 Ответ

0 голосов
/ 23 сентября 2019

Вы можете использовать unlist(), чтобы сгладить структуру списка.Вы также можете удалить автоматически сгенерированные имена, если вы не хотите / не нуждаетесь в них:

ts <- 1:10 # generate a number from 1 to 10
bs <- 2 # let block size equals 2
nb <- length(ts) / bs # number of blocks
blk <- split(ts, rep(1:nb, each=bs)) # split  the generated numbers into "blk"
res<-unlist(sample(blk, replace=TRUE, 20)) # resample the blk 20 times with replacement
names(res) <- NULL # optional
res
#>  [1]  3  4  9 10  1  2  7  8  3  4  3  4  7  8  5  6  7  8  3  4  1  2  3
#> [24]  4  9 10  5  6  7  8  9 10  9 10  5  6  9 10  1  2

Создано в 2019-09-23 пакетом Представить (v0.3.0)

...