根据combn为列表中的数据帧指定名称

时间:2016-01-30 11:54:07

标签: r list plyr combn

我已经使用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;

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 个答案:

答案 0 :(得分: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"

答案 1 :(得分:2)

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"