Здесь являются двумя альтернативами.
Во-первых, при условии, что мы должны начать с «х» и «у», вы можете попробовать interleave
из пакета «GData»:
library(gdata)
interleave(x, y)
# ranks names
# [1,] "1" "Karl"
# [2,] "" "Cape Town"
# [3,] "2" "Klaus"
# [4,] "" "London"
# [5,] "3" "Mary"
# [6,] "" "Berlin"
Во-вторых, предполагая, что мы можем начать с «ряды», " имена «и„университеты“, вы можете использовать базу R, как это:
cbind(c(t(cbind(ranks, ""))), c(t(cbind(names, universities))))
# [,1] [,2]
# [1,] "1" "Karl"
# [2,] "" "Cape Town"
# [3,] "2" "Klaus"
# [4,] "" "London"
# [5,] "3" "Mary"
# [6,] "" "Berlin"
Лучшей альтернативой, однако, было бы использовать что-то вроде melt
(от„reshape2“или» data.table «). Это позволит вам добавить еще одну переменную, которая указывает, какой тип измерения представляет значение.
library(data.table)
melt(data.table(ranks, names, universities), "ranks")
# ranks variable value
# 1: 1 names Karl
# 2: 2 names Klaus
# 3: 3 names Mary
# 4: 1 universities Cape Town
# 5: 2 universities London
# 6: 3 universities Berlin
Или, чтобы соответствовать нужной упорядоченность:
library(data.table)
setorder(melt(data.table(ranks, names, universities), "ranks"), ranks)[]
# ranks variable value
# 1: 1 names Karl
# 2: 1 universities Cape Town
# 3: 2 names Klaus
# 4: 2 universities London
# 5: 3 names Mary
# 6: 3 universities Berlin
'матрица (rbind (т (х), т (у)), Ncol = 2, byrow = TRUE)' – user20650
Транспонирование! Отличная идея. Хотите обновить свой комментарий до ответа? – MERose
напишите, пожалуйста, напишите – user20650