【问题标题】:How to collect outputs of vector-valued function into a dataframe?如何将向量值函数的输出收集到数据框中?
【发布时间】:2021-04-06 08:46:27
【问题描述】:

我有一个函数f1,它接受一个数字k 作为输入并返回3 个数字k, k+1, k+2。我想问一下如何将这些结果连接到从1到10的k的数据帧中。这样k这一行就对应了输出f1(k)

f1 <- function(k){
  return (c(k, k+1, k+2))
}

f1(1)
f1(2)

【问题讨论】:

    标签: r dataframe vector


    【解决方案1】:

    一个选项是Vectorize函数'f1',将值1传递到10,返回一个matrix,然后用as.data.frame将其转换为data.frame

    as.data.frame(Vectorize(f1)(1:10))
    

    如果需要垂直,则transpose输出并应用as.data.frame

    as.data.frame(t(Vectorize(f1)(1:10)))
    

    -输出

    #    V1 V2 V3
    #1   1  2  3
    #2   2  3  4
    #3   3  4  5
    #4   4  5  6
    #5   5  6  7
    #6   6  7  8
    #7   7  8  9
    #8   8  9 10
    #9   9 10 11
    #10 10 11 12
    

    或者我们可以使用outer

    as.data.frame(outer(1:10, 0:2, `+`))
    

    【讨论】:

      【解决方案2】:

      你也可以使用:

      as.data.frame(do.call(rbind,lapply(1:10,f1)))
      

      输出:

      as.data.frame(do.call(rbind,lapply(1:10,f1)))
         V1 V2 V3
      1   1  2  3
      2   2  3  4
      3   3  4  5
      4   4  5  6
      5   5  6  7
      6   6  7  8
      7   7  8  9
      8   8  9 10
      9   9 10 11
      10 10 11 12
      

      【讨论】:

        猜你喜欢
        • 2021-04-07
        • 1970-01-01
        • 2019-11-05
        • 2023-04-11
        • 2012-05-13
        • 1970-01-01
        • 2020-01-06
        • 2016-02-28
        • 2021-08-06
        相关资源
        最近更新 更多