【问题标题】:Binding variable length vectors R绑定可变长度向量 R
【发布时间】:2013-08-23 21:29:04
【问题描述】:

我想将不同长度的向量绑定在一起。我查找了this 线程,但不清楚如何使用 append 或 cbind 制作矩阵/列表。

例如, 让我们取 2 个不同长度的随机向量:

> b<-sample(10,5)
> d<-sample(10,10)

现在对它们操作 cbind 将尽可能重复较小的向量,

> cbind(b,d)
       b  d
 [1,]  3  7
 [2,]  5  4
 [3,] 10  3
 [4,]  4  2
 [5,]  6  5
 [6,]  3  8
 [7,]  5  6
 [8,] 10 10
 [9,]  4  9
[10,]  6  1

如果我尝试追加,

> append(b,d)
 [1]  3  5 10  4  6  7  4  3  2  5  8  6 10  9  1

它将两个向量都附加到 1 中。更长的解决方案是将向量长度保存在不同的向量中,并使用长度向量从这个合并的向量中循环提取向量。但是有没有更好的方法呢?因为我想把这个更大的矩阵/列表放到一个函数中,如果我不使用这种基于长度向量的方法会变得更容易。

【问题讨论】:

  • 你想要的输出是什么?
  • 包含可变长度向量的矩阵或列表,我将其加入循环中。
  • 您不能在 R 中创建锯齿状矩阵。您必须为缺失的单元格赋予一些价值。您可以创建一个向量列表。 some.list &lt;- list(b = b, d = d) 然后使用列表循环/应用来进行计算。你对所需的矩阵/列表做了什么?
  • 我想要做的是将此矩阵/列表提供给箱线图,其中每列都用于搜索中位数、分位数等。

标签: r vector


【解决方案1】:
set.seed(1)
b <- rnorm(10,2,4)
d <- rnorm(50,5,3)
f <- rnorm(100,1,0.5)
example <- list(b=b,d=d,f=f)
for(i in paste("var",1:3)){
  example[[i]] <- rnorm(sample(100,1),mean=sample(5,1),sd=sample(3,1))
}
boxplot(example)

【讨论】:

  • 我必须通过循环追加到这个列表,追加(例如,x)会在循环中工作吗?它目前正在将 x 的每个元素作为列表的单个元素。
  • @SahilM 查看编辑。您可以使用循环将元素添加到列表中。您可能应该花一些时间阅读 r 中的列表。
猜你喜欢
  • 2017-01-08
  • 1970-01-01
  • 2023-04-08
  • 2021-12-26
  • 2015-08-15
  • 1970-01-01
  • 2021-04-12
  • 1970-01-01
  • 2015-02-19
相关资源
最近更新 更多