代码之家  ›  专栏  ›  技术社区  ›  Unrelated

在R中应用需要seq()的函数

  •  1
  • Unrelated  · 技术社区  · 7 年前

    100n^2 从…起 n=1

    > df <- data.frame(n = seq(1:4),a = rep(100))
    > df
      n   a
    1 1 100
    2 2 100
    3 3 100
    4 4 100
    

    更简单的示例:

    让我们 fun1 我们的示例求和函数。我可以抽出100,因为我可以稍后将其乘以。

    fun <- function(x) {
        i <- seq(1,x,1)
        sum(i^2) }
    

    df$n 提供总和的上限。

    预期结果如下: df$b :

    > df
      n   a  b
    1 1 100  1
    2 2 100  5
    3 3 100 14
    4 4 100 30
    

    apply(df$n,1,phi)
    

    mat <- as.matrix(df)
    apply(mat[1,],1,phi)
    

    两者都返回错误:

    Error in seq.default(1, x, 1) : 'to' must be of length 1 
    

    seq 需要长度为1的“to”值。我不知道如何继续。

    也许不那么简单的例子:

    ,乘以100(或 df$a n ?

    我的基本目标是对数据帧(或矩阵)的每一行应用求和。正如我在这个网站上的一个答案中看到的那样,上述问题源于我使用seq()的尝试。我很乐意接受这样一个答案,即以不同的方式进行总结,从而避免上述问题。

    1 回复  |  直到 7 年前
        1
  •  2
  •   akrun    7 年前

    如果我们正在申请 seq from to .所以我们可以循环并执行它

    df$b <- sapply(df$n, fun)
    df$b
    #[1]  1  5 14 30
    

    或者我们可以 Vectorize

    Vectorize(fun)(df$n)
    #[1]  1  5 14 30