Как создать таблицу с гибкими столбцами на основе управления переменными в R? - PullRequest
1 голос
/ 02 мая 2020

Я хочу создать рассказ, например:

1 1 6 6 10 10 ...
2 2 7 7 11 11 ... 
3 3 8 8 12 12 ...
4 4 9 9 13 13 ...
5 5     14 14 ...
        15 15 ...

Я хочу использовать переменные:

n (повтор) и m (общее количество столбцов) и k (k = k номер конца предыдущего столбца + 1, например: 6 = 5 + 1, и 10 = 9 + 1), и различная длина номера строки для создания таблицы.

Я знаю, что могу использовать как:

rep(list(1:5,6:9,10:15), each = 2)),

но как сделать их параметрами, используя общее выражение для списка списка (1: 5,6: 9,10: 15, .. используйте выражение n, m, k ...).

Я пытался использовать l oop для (i в 1: m) et c .., но не могу решить, наконец, я хочу последовательность, используя unlist (): 1,2,3, 4,5,6,1,2,3,4,5,6 ......) Большое спасибо.

Ответы [ 2 ]

2 голосов
/ 02 мая 2020

Может быть, приведенный ниже код может помочь

len <- c(5,4,6)
res <- unlist(unname(rep(split(1:sum(len),
                               findInterval(1:sum(len),cumsum(len)+1)),
                         each = 2)))

, что дает

> res
 [1]  1  2  3  4  5  1  2  3  4  5  6  7  8  9  6  7  8  9 10 11 12 13 14 15 10 11 12 13 14 15
0 голосов
/ 02 мая 2020

Возможно, что-то подобное будет полезно.

#Number of times to repeat
r <- 2
#Length of each sequence
len <- c(5, 4, 6)
#Get the end of the sequence
end <- cumsum(Glen)
#Calculate the start of each sequence
start <- c(1, end[-length(end)] + 1)

#Create a sequence of start and end and repeat it r times
Map(function(x, y) rep(seq(x, y), r), start, end)
#[[1]]
# [1] 1 2 3 4 5 1 2 3 4 5

#[[2]]
#[1] 6 7 8 9 6 7 8 9

#[[3]]
# [1] 10 11 12 13 14 15 10 11 12 13 14 15

Вы можете unlist получить его как один вектор.

unlist(Map(function(x, y) rep(seq(x, y), r), start, end))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...