【问题标题】:Creating a dataframe with a double loop使用双循环创建数据框
【发布时间】:2020-06-30 12:57:49
【问题描述】:

假设我有a = 4b = 3。 我想使用双 for 循环创建一个 df/tibble a x b,知道 df 的每个值都是一个列表(包含基于 i = 1:4j = 1:3 的值)。

我的尝试:

df=data_frame()
for (i in 1:a){
  for (j in 1:b){
    df[[i]][[j]]<-list(i,j)
  }
}

如果你有非算法的答案,我也很想知道。

【问题讨论】:

    标签: r dataframe for-loop


    【解决方案1】:

    您似乎想要一个包含三列的小标题,每个条目都包含一个与列号和行号一致的两个数字的列表:

    as_tibble(lapply(1:3, function(x) lapply(1:4, function(y) list(x, y))), 
              .name_repair = "unique")
    # A tibble: 4 x 3
      ...1       ...2       ...3      
      <list>     <list>     <list>    
    1 <list [2]> <list [2]> <list [2]>
    2 <list [2]> <list [2]> <list [2]>
    3 <list [2]> <list [2]> <list [2]>
    4 <list [2]> <list [2]> <list [2]>
    

    【讨论】:

      【解决方案2】:

      这应该可行:

      expand.grid(1:a, 1:b)
      

      您提供的示例不需要for-loop,就像 R 中的大多数应用程序一样。那么,您真的需要循环吗? (例如,在现实生活中,循环中会发生其他事情来确定您需要它们吗?

      【讨论】:

        猜你喜欢
        • 2017-04-25
        • 2018-07-30
        • 2017-10-15
        • 1970-01-01
        • 2013-08-17
        • 1970-01-01
        • 2021-08-15
        • 1970-01-01
        • 2019-07-28
        相关资源
        最近更新 更多