【问题标题】:Create multiple sequences with different lengths (length.out)创建多个不同长度的序列(length.out)
【发布时间】:2020-05-30 16:10:13
【问题描述】:

假设我有一个向量,

n <- c(1:100)

我想为上面向量中的每个值 'n' 输出多个序列。

我试着做这样的事情:

x <- seq (0,5, length.out = n+1)
x <- x[-1]

我得到错误:

警告信息: 在 seq.default(0,5, length.out = n+1) length.out 参数使用的第一个元素

然后我想使用“x”进行计算:

fx <- dnorm(x, mean = 0 , sd = 4)

其中 fx[1] 将输出 fx 的第一个值,依此类推直到 fx[n]

【问题讨论】:

  • 运行x &lt;- seq (0,5, length.out = n+1) 后,您希望x 中的内容是什么?我不确定你想在那里做什么。而不是n=1:100,也许可以做一个更小的例子并准确显示输出,以便您可以测试和验证可能的解决方案。

标签: r vector sequence seq


【解决方案1】:

这就是你想要 x 的样子吗?

x <- lapply(n, function(i) seq (0,5, length.out = i+1))
x
[[1]]
[1] 0 5

[[2]]
[1] 0.0 2.5 5.0

[[3]]
[1] 0.000000 1.666667 3.333333 5.000000

[[4]]
[1] 0.00 1.25 2.50 3.75 5.00

[[5]]
[1] 0 1 2 3 4 5

[[6]]
[1] 0.0000000 0.8333333 1.6666667 2.5000000 3.3333333 4.1666667 5.0000000

【讨论】:

    【解决方案2】:

    也许以下基本 R 代码可以提供帮助

    g <- Vectorize(function(k) seq (0,5, length.out = k+1)[-1])
    x <- g(n)
    fx <- sapply(x, dnorm, mean = 0,sd = 4)
    

    这样

    > head(x)
    [[1]]
    [1] 5
    
    [[2]]
    [1] 2.5 5.0
    
    [[3]]
    [1] 1.666667 3.333333 5.000000
    
    [[4]]
    [1] 1.25 2.50 3.75 5.00
    
    [[5]]
    [1] 1 2 3 4 5
    
    [[6]]
    [1] 0.8333333 1.6666667 2.5000000 3.3333333 4.1666667 5.0000000
    

    > head(fx)
    [[1]]
    [1] 0.04566227
    
    [[2]]
    [1] 0.08204024 0.04566227
    
    [[3]]
    [1] 0.09144309 0.07047797 0.04566227
    
    [[4]]
    [1] 0.09498265 0.08204024 0.06426848 0.04566227
    
    [[5]]
    [1] 0.09666703 0.08801633 0.07528436 0.06049268 0.04566227
    
    [[6]]
    [1] 0.09759449 0.09144309 0.08204024 0.07047797 0.05797360 0.04566227
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-06
      • 2022-01-15
      • 2017-08-24
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      相关资源
      最近更新 更多