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

根据组合为列表中的数据帧分配名称

  •  2
  • danny_C_O_T_W  · 技术社区  · 10 年前

    我用alply(~500)创建了一个数据帧列表;

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

    我想为每个数据分配新名称。框架基于相同的组合,替换默认的数字名称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
    

    …它告诉我每个数据的时间间隔。帧是在原始函数中计算的。

    我试着用lapply和;

    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'
    

    我的赋值函数显然有问题。有小费吗?

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

    这个 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
  •  2
  •   nicola    10 年前

    您可以尝试:

    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"