为了账号安全,请及时绑定邮箱和手机立即绑定

如何在不重复较短向量的元素的情况下cbind或rbind不同长度的向量?

/ 猿问

如何在不重复较短向量的元素的情况下cbind或rbind不同长度的向量?

慕婉清6462132 2019-08-19 16:15:21

如何在不重复较短向量的元素的情况下cbind或rbind不同长度的向量?

cbind(1:2, 1:10)  

     [,1] [,2]  

  [1,]    1    1  

  [2,]    2    2  

  [3,]    1    3  

  [4,]    2    4  

  [5,]    1    5  

  [6,]    2    6  

  [7,]    1    7  

  [8,]    2    8  

  [9,]    1    9  

 [10,]    2   10  

我想要一个像下面这样的输出


[,1] [,2]  

[1,] 1 1  

[2,] 2 2  

[3,]   3  

[4,]   4  

[5,]   5  

[6,]   6  

[7,]   7  

[8,]   8  

[9,]   9  

[10,]  10  


查看完整描述

3 回答

?
月关宝盒

我遇到了类似的问题,我想建议一些额外的解决方案,我希望,有些可能会有用。解决方案相当简单,并使用qpcR包和提供的cbind.na功能。


x <- 1:2

y <- 1:10

dta <- qpcR:::cbind.na(x, y)

结果

> head(dta)

      x y

[1,]  1 1

[2,]  2 2

[3,] NA 3

[4,] NA 4

[5,] NA 5

[6,] NA 6

一边评论

按照OP的原始示例,可以轻松删除列名称:


colnames(dta) <- NULL

该操作将完整地产生所需的输出:


> head(dta)

     [,1] [,2]

[1,]    1    1

[2,]    2    2

[3,]   NA    3

[4,]   NA    4

[5,]   NA    5

[6,]   NA    6


查看完整回答
反对 回复 2019-08-19
?
慕姐829404

辅助功能......


bind.pad <- function(l, side="r", len=max(sapply(l,length)))

{

  if (side %in% c("b", "r")) {

    out <- sapply(l, 'length<-', value=len)

  } else {

    out <- sapply(sapply(sapply(l, rev), 'length<-', value=len, simplify=F), rev)}

  if (side %in% c("r", "l")) out <- t(out)

  out

}

例子:


> l <- lapply(c(3,2,1,2,3),seq)

> lapply(c("t","l","b","r"), bind.pad, l=l, len=4)

[[1]]

     [,1] [,2] [,3] [,4] [,5]

[1,]   NA   NA   NA   NA   NA

[2,]    1   NA   NA   NA    1

[3,]    2    1   NA    1    2

[4,]    3    2    1    2    3


[[2]]

     [,1] [,2] [,3] [,4]

[1,]   NA    1    2    3

[2,]   NA   NA    1    2

[3,]   NA   NA   NA    1

[4,]   NA   NA    1    2

[5,]   NA    1    2    3


[[3]]

     [,1] [,2] [,3] [,4] [,5]

[1,]    1    1    1    1    1

[2,]    2    2   NA    2    2

[3,]    3   NA   NA   NA    3

[4,]   NA   NA   NA   NA   NA


[[4]]

     [,1] [,2] [,3] [,4]

[1,]    1    2    3   NA

[2,]    1    2   NA   NA

[3,]    1   NA   NA   NA

[4,]    1    2   NA   NA

[5,]    1    2    3   NA


查看完整回答
反对 回复 2019-08-19
  • 3 回答
  • 0 关注
  • 268 浏览
我要回答

添加回答

回复

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信