Mam prostą listę wektorów i chciałbym replikować element wszystkich wektorów o długości 1.
mylist <- list(c(98, 102), c(175, 177), c(239, 240), c(146, 147, 168, 169
), c(240, 242), c(363, 391), c(144, 146, 146), 197, 126, c(181,
192))
results <- lapply(mylist,function(x) if(length(x)==1) rep(x[1],each=2))
Otrzymuję wyniki oczekiwanych powtórzeń, ale jak również zachować w wynikach wszystkie wektory o długości> 1? Nie mogę znaleźć właściwego sposobu, aby to zrobić. Jestem całkiem pewien, że to całkiem proste ...
Dzięki za pomoc
Odpowiedzi:
2 dla odpowiedzi № 1Możesz po prostu dodać else
instrukcja, aby pozostawić elementy z większą liczbą wartości
mylist <- list(c(98, 102), c(175, 177), c(239, 240), c(146, 147, 168, 169
), c(240, 242), c(363, 391), c(144, 146, 146), 197, 126, c(181,
192))
results <- lapply(mylist,function(x) if(length(x)==1) rep(x[1],each=2) else x)
Co skutkuje w
[[1]]
[1] 98 102
[[2]]
[1] 175 177
[[3]]
[1] 239 240
[[4]]
[1] 146 147 168 169
[[5]]
[1] 240 242
[[6]]
[1] 363 391
[[7]]
[1] 144 146 146
[[8]]
[1] 197 197
[[9]]
[1] 126 126
[[10]]
[1] 181 192