如何将列表中向量的所有元素更改为值

列表中的每个元素都对应一个向量。我想将向量中的所有元素更改为指定值。例如:

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中是否有可以处理此问题的函数?

fandongdong888 回答:如何将列表中向量的所有元素更改为值

我们可以将lengthssplit一起使用

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))
本文链接:https://www.f2er.com/3165295.html

大家都在问