матрица с одинаковыми именами R - PullRequest
0 голосов
/ 13 июля 2020
for usability
loopx<- list()
loopx[[1]] <- c(3,3)
loopx[[2]] <- c(2,4)
loopx[[3]] <- c(4,44)
loopx[[4]] <- c(8,5)
loopx[[5]] <- c(4,4)

Возвращает список из 5 слоев, например

loopx

[[1]] [1] 3 3

[[2]] [1] 2 4

[[3]] [1] 4 44

[[4]] [1] 8 5

[[5]] [1] 4, 4

Затем я go

names(loopx) <- c("one", "two", "three", "four", "five")
unlist(loopx)
one1  one2 two1 two2 three1 thre2 four1 four2 five1 six2 
 3      3   2    4    4      44    8     5    4     4 

Как сделать одинаковые имена в матрице, чтобы 1 и 2 не повторялись

Ответы [ 2 ]

0 голосов
/ 13 июля 2020

Вместо unlist ing, мы можем stack его в два столбца data.frame, а затем преобразовать его в именованный vector из столбцов

with(stack(loopx)[2:1], setNames(values, ind))
# one   one   two   two three three  four  four  five  five 
#   3     3     2     4     4    44     8     5     4     4

Или мы используем unlist с use.names = FALSE и устанавливаем имена rep, лицензируя names

setNames(unlist(loopx, use.names = FALSE), rep(names(loopx), lengths(loopx)))
#  one   one   two   two three three  four  four  five  five 
#   3     3     2     4     4    44     8     5     4     4  

Или с enframe/deframe от tibble

library(tibble)
library(tidyr)
enframe(loopx) %>% 
       unnest(c(value)) %>%
       deframe
#  one   one   two   two three three  four  four  five  five 
#    3     3     2     4     4    44     8     5     4     4 
0 голосов
/ 13 июля 2020

Вы можете использовать sub для удаления цифр и setNames для переназначения имен.

unloopx <- unlist(loopx)
setNames(unloopx, sub("\\d+", "", names(unloopx)))

#  one   one   two   two three three  four  four  five  five 
#    3     3     2     4     4    44     8     5     4     4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...