如何在R

时间:2019-04-12 07:21:00

标签: r list dataframe vector lapply

我已经获得有关如何在列表中创建一组列表的帮助,但是我无法添加另一层/无法扩展列表的深度。我想要的是在每个列表中添加一个最终的“层”,其读为“ DataFrame”,“ DataFrame2”,依此类推。目前我有:

Layer1 = c('AA', 'BB', 'CC', 'DD')

myList=setNames(as.list(Layer1),Layer1)

myList=lapply(myList, function(x){
  setNames(vector("list",length(Layer1)),paste0(x," vs ",Layer1))
})

其中每个列表中都包含myListAABBCC的{​​{1}},是另外一个列表,例如DDAA vs BB等,或者在AA vs BB的情况下,内部列表将读取BBBB vs AA(以下称为BB vs BB文件),依此类推。

所以我认为我可以通过按照...的方式做一些事情来轻松地为此添加一个附加层。

?? vs ??

我曾经天真地尝试使用Layer1 = c('AA', 'BB', 'CC', 'DD') Layer3 = c('DataFrame', 'DataFrame2', 'Matrix', 'Matrix2') myList=setNames(as.list(Layer1),Layer1) myList=lapply(myList, function(x){ setNames(vector("list",length(Layer1)),paste0(x," vs ",Layer1)) myList[i]=lapply(myList, function(x){ setNames(vector("list",length(Layer3)),Layer3) }) }) (我知道那是行不通的,但是我不确定自己是否会做任何事情)指示我要移至层并开始添加空白myList[i]DataFrame向量(到我的Matrix子列表中),以便我拥有“空插槽”(可以这么说),以便将来将数据移入。 / p>

最终,我希望每个?? vs ??文件夹都包含一个空白的?? vs ??DataFrameDataFrame2Matrix

1 个答案:

答案 0 :(得分:1)

@import 'themes'; // framework component themes (styles tied to theme variables) @import '~@nebular/theme/styles/globals'; @import '~@nebular/auth/styles/all'; // loading progress bar theme @import './pace.theme.scss'; // install the framework and custom global styles @include nb-install() { // framework global styles @include nb-theme-global(); @include nb-auth-global(); // loading progress bar @include ngx-pace-theme(); .custom-control .custom-control-indicator { border-radius: 50%; // TODO: quickfix for https://github.com/akveo/nebular/issues/275 } }; 遍历类似结构的列表的每个元素,并对其应用函数。值得注意的是,它不包含位置参数。

您想要做的是:

  • 遍历lapply的所有元素,并为每个元素创建一个列表,依次列出
  • 包含Layer1个元素,其中每个元素都包含
  • Layer1中提供的元素数量

代码

Layer3
Layer1 <- c('AA', 'BB', 'CC', 'DD')
Layer3 <- c('DataFrame', 'DataFrame2', 'Matrix', 'Matrix2')

my_list <- lapply(Layer1, function(el_layer1_outer) {
   ## create a list with |Layer1| elements
   ## this we do by creating first an inner list vector(.)
   ## and the repeating it |Layer1| times
   ret <- rep(list(setNames(vector("list", length(Layer3)), 
                            Layer3)), 
              length(Layer1))
   setNames(ret, ## ret has no proper names yet
            paste(el_layer1_outer, "vs.", Layer1)) 
})
names(my_list) <- Layer1 ## could have been done with setNames as well
str(my_list)