我需要访问list的第一个元素.问题是列表的嵌套深度不同.下面是一个例子:

list1 <- list(ts(1:100),
              list(1:19,
                   factor(letters)))

list2 <- list(list(list(ts(1:100), data.frame(a= rnorm(100))),
                   matrix(rnorm(10))),
              NA)

我的预期输出是获得两个列表的时间序列ts(1:100),即list1[[1]]list2[[1]][[1]][[1]].我try 过不同的东西,其中有lapply(list2, `[[`, 1)种在这里不起作用.

推荐答案

另一个base R解决方案——您可以使用递归函数来实现这一点:

list1 <- list(ts(1:100),
              list(1:19,
                   factor(letters)))

list2 <- list(list(list(ts(1:100), data.frame(a= rnorm(100))),
                   matrix(rnorm(10))),
              NA)


recursive_fun <- function(my_list) {
  
  if (inherits(my_list, 'list')) {
    Recall(my_list[[1]])
  } else {
    my_list
  }
  
}

输出:

> recursive_fun(list1)
Time Series:
Start = 1 
End = 100 
Frequency = 1 
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30
 [31]  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60
 [61]  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100

> recursive_fun(list2)
Time Series:
Start = 1 
End = 100 
Frequency = 1 
  [1]   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19  20  21  22  23  24  25  26  27  28  29  30
 [31]  31  32  33  34  35  36  37  38  39  40  41  42  43  44  45  46  47  48  49  50  51  52  53  54  55  56  57  58  59  60
 [61]  61  62  63  64  65  66  67  68  69  70  71  72  73  74  75  76  77  78  79  80  81  82  83  84  85  86  87  88  89  90
 [91]  91  92  93  94  95  96  97  98  99 100

R相关问答推荐

是否可以通过另一个DF的内容过滤数据帧列表?

在R中使用自定义函数时如何删除该函数的一部分?

提取rame中对应r中某个变量的n个最小正值和n个最大负值的条目

如果行和列名以相同的开头,将矩阵值设置为0

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

R Lubridate:舍入/快照日期时间到一天中最近的任意时间?

R创建一个数据透视表,计算多个组的百分比

为什么当我try 在收件箱中使用合并功能时会出现回收错误?

ggplot的轴标签保存在officer中时被剪切

错误:非常长的R行中出现意外符号

如何在观测缺失的地方添加零

如何使用列表中多个列表中的第一条记录创建数据框

如何在R中描绘#符号?

Geom_Hline将不会出现,而它以前出现了

按时间顺序对不同事件进行分组

随机森林的带Shap值的蜂群图

R代码,用于在线条图下显示观测表

我需要使用ggplot2制作堆叠条形图

计算来自单独分组的分幅的值的百分位数

在ggplot2图表中通过端点连接点