【问题标题】:Assign names to dataframes within a list based on combn根据组合为列表中的数据框分配名称
【发布时间】:2016-01-30 11:54:06
【问题描述】:

我已经使用 alply (~500) 创建了一个数据框列表;

prevalence <- alply(combos, 2, prevalence.func)

我想根据相同的组合为每个 data.frame 分配新名称,替换默认的数字名称 1、2、3...500。

使用以下方法创建的可重现示例:

simple_list = replicate(n = 10,
                 expr = {data.frame(x = rnorm(20), y = rnorm(20))},
                 simplify = F)

combos <-combn(1:5, 2)

这样每个数据框的名称...

simple_list$1 becomes simple_list$1-2
simple_list$10 becomes simple_list$4-5

...它告诉我在原始函数中计算每个 data.frame 的时间间隔。

我尝试使用 lapply with;

someFunction <-function (x){

  names(simple_list)<-paste(combos[x,x[1]],combos[x,x[2]],sep="-")

 }

lapply(simple_list,someFunction)

但我收到错误:

Error in combos[x, x[1]] : invalid subscript type 'list'

我的分配功能显然有问题。有什么建议吗?

【问题讨论】:

    标签: r list plyr combn


    【解决方案1】:

    combn 有一个 FUN 参数,所以它可以是

     names(simple_list) <- combn(5,2, FUN= paste, collapse='-')
     names(simple_list)
     #[1] "1-2" "1-3" "1-4" "1-5" "2-3" "2-4" "2-5" "3-4" "3-5" "4-5"
    

    【讨论】:

      【解决方案2】:

      你可以试试:

      names(simple_list)<-lapply(combn(5,2,simplify=FALSE),function(x) paste(x,collapse="-"))
      #names(simple_list)
      #[1] "1-2" "1-3" "1-4" "1-5" "2-3" "2-4" "2-5" "3-4" "3-5" "4-5"
      

      【讨论】:

        猜你喜欢
        • 2018-02-03
        • 2016-11-12
        • 2022-06-16
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2022-10-01
        • 2018-12-21
        相关资源
        最近更新 更多