我有一份表格清单:
dat[[1]], dat[[2]], ..., dat[[n]]
Run Code Online (Sandbox Code Playgroud)
而我想获得两个单独的列表,一个包含具有奇数索引的数据,另一个包含偶数索引,即:
new_dat_odd <- dat[[1]], dat[[3]], dat[[5]], ...
new_dat_even <- dat[[2]], dat[[4]], dat[[6]], ...
Run Code Online (Sandbox Code Playgroud)
在尝试这样做时,我的主要问题是我找不到如何引用R中列表的索引.
谢谢你的任何建议.
1)如果L是列表,那么我们可以使用此代码,我们注意到1:2根据需要回收:
s <- split(L, 1:2)
Run Code Online (Sandbox Code Playgroud)
1a)上述工作无论是偶数还是奇数长度,但根据评论,如果奇怪,它会发出警告.以下修改给出了相同的答案,但没有给出警告:
s <- split(L, rep(1:2, length = length(L)))
Run Code Online (Sandbox Code Playgroud)
在任一上述的s[[1]]和s[[2]]是两个列表.例如,
> L <- as.list(1:10)
> str(split(L, 1:2))
List of 2
$ 1:List of 5
..$ : int 1
..$ : int 3
..$ : int 5
..$ : int 7
..$ : int 9
$ 2:List of 5
..$ : int 2
..$ : int 4
..$ : int 6
..$ : int 8
..$ : int 10
Run Code Online (Sandbox Code Playgroud)
2)这是另一种方式:
is.odd <- rep(c(TRUE, FALSE), length = length(L))
list(odd = L[is.odd], even = L[!is.odd])
Run Code Online (Sandbox Code Playgroud)
更新已添加1a和2.