【问题标题】:Adding the subsequent numbers of list containing random numbers, to the subsequent indices将包含随机数的列表的后续数字添加到后续索引
【发布时间】:2021-12-23 21:32:22
【问题描述】:

我有一个包含一些随机数的列表。我想为每个随机数添加以下两个数字,并将它们添加到列表中的后续索引,而不使用 for 循环。

所以,假设我有这个列表:v <- c(238,1002,569,432,6,1284) 然后我想要的输出是: v <- c(238,239,240,1002,1003,1004,569,570,571,432,433,434,6,7,8,1284,1285,1286)

我对 r 还是很陌生,所以我真的不知道我在做什么,但我已经尝试了几个小时没有结果。我有,使用 for 循环使它工作,但是我知道 r 对循环不太满意,所以我真的需要以某种方式对其进行矢量化。

有谁知道我如何以有效的方式将其实现到我的 r 代码中?

【问题讨论】:

  • c(outer(0:2, v, "+"))
  • 谢谢!我对堆栈溢出也很陌生,所以我不知道如何将您的回复标记为答案..

标签: r list indexing add


【解决方案1】:

您可以只使用outer 来计算外和:

res <- outer(0:2, v, "+")
#     [,1] [,2] [,3] [,4] [,5] [,6]
#[1,]  238 1002  569  432    6 1284
#[2,]  239 1003  570  433    7 1285
#[3,]  240 1004  571  434    8 1286

然后您可以将生成的矩阵转换为向量:

res <- as.vector(res)
#[1]  238  239  240 1002 1003 1004  569  570  571  432  433  434    6    7    8 1284 1285 1286

注意matrices are "column-major" 在 R.

【讨论】:

    猜你喜欢
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 2011-10-14
    • 2023-03-08
    相关资源
    最近更新 更多