/ / Replikuj element na liście wektora, jeśli długość (wektor) == 1 w R - r

Replikuj element na liście wektora, jeśli długość (wektor) == 1 w R - r

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 № 1

Moż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