Как изменить все элементы векторов в списке на значения - PullRequest
1 голос
/ 04 ноября 2019

Каждый элемент в моем списке соответствует вектору. Я хочу изменить все элементы в моих векторах на указанное значение. Так, например:

x <- c("x1","x2","x3")
y <- list(1:5,1:10,1:15)
Ans <- list()
for (i in 1:length(y)){
  Ans[[i]] <- rep(x[i],length(y[[i]]))  
}

Это приводит к:

[[1]]
[1] "x1" "x1" "x1" "x1" "x1"

[[2]]
 [1] "x2" "x2" "x2" "x2" "x2" "x2" "x2" "x2" "x2" "x2"

[[3]]
 [1] "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3"

Есть ли в R функция, которая может это обработать?

1 Ответ

1 голос
/ 04 ноября 2019

Мы можем использовать lengths с split

unname(split(rep(x, lengths(y)), rep(seq_along(x), lengths(y))))
#[[1]]
#[1] "x1" "x1" "x1" "x1" "x1"

#[[2]]
# [1] "x2" "x2" "x2" "x2" "x2" "x2" "x2" "x2" "x2" "x2"

#[[3]]
# [1] "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3" "x3"

Или с Map

Map(rep, x, lengths(y))
...