R 将两个向量转换为向量列表

R 将两个向量转换为向量列表,r,list,vector,R,List,Vector,假设我有一组长度相同的独立向量。比如说, x <- 1:10 y <- rep(NA, 10) 常用的方法是什么?使用mapply和c: 使用mapply和c: 另一种选择: split(cbind(x, y), seq(length(x))) 甚至: split(c(x, y), seq(length(x))) 甚至假设x没有重复值,如示例中所示: split(c(x, y), x) 另一种选择: split(cbind(x, y), seq(length(x))) 甚至

假设我有一组长度相同的独立向量。比如说,

x <- 1:10
y <- rep(NA, 10)
常用的方法是什么?

使用mapply和c:

使用mapply和c:

另一种选择:

split(cbind(x, y), seq(length(x)))
甚至:

split(c(x, y), seq(length(x)))
甚至假设x没有重复值,如示例中所示:

split(c(x, y), x)
另一种选择:

split(cbind(x, y), seq(length(x)))
甚至:

split(c(x, y), seq(length(x)))
甚至假设x没有重复值,如示例中所示:

split(c(x, y), x)

下面是一个解决方案,它允许您根据元素的位置将任意数量的等长向量压缩到一个列表中

merge_by_pos <- function(...){
  dotlist = list(...)
  lapply(seq_along(dotlist), function(i){
    Reduce('c', lapply(dotlist, '[[', i))
  })
}
x <- 1:10
y <- rep(NA, 10)
z <- 21:30

merge_by_pos(x, y, z)

下面是一个解决方案,它允许您根据元素的位置将任意数量的等长向量压缩到一个列表中

merge_by_pos <- function(...){
  dotlist = list(...)
  lapply(seq_along(dotlist), function(i){
    Reduce('c', lapply(dotlist, '[[', i))
  })
}
x <- 1:10
y <- rep(NA, 10)
z <- 21:30

merge_by_pos(x, y, z)
Map是mappy…,SIMPLIFY=FALSE的糖。Map是mappy…,SIMPLIFY=FALSE的糖。