我有时发现通过将列表强制为数据框并使用现代dplyr 解决方案来处理列表更容易,所以这里有一个额外的选项。请注意,这是一个数据框,因此如果您有一个要使用的列表,请首先使用data.frame(yourlistname) 创建一个数据框。这是一些示例数据。
library(dplyr)
library(magrittr)
structure(list(z = c(0.334237399835172, 0.468852147809068, 0.317526015236499,
0.487024179746106, 0.303294768702877, 0.502790849577665)), class = "data.frame",
row.names = c("lower1", "upper1", "lower2", "upper2", "lower3", "upper3"))
使用取模命令%%,您可以将行号除以2 来识别奇数行和偶数行。
> df %>% mutate(modulo=row_number() %% 2)
z modulo
1 0.3342374 1
2 0.4688521 0
3 0.3175260 1
4 0.4870242 0
5 0.3032948 1
6 0.5027908 0
现在您可以选择偶数行了:
> df %>% slice(which(row_number() %% 2 == 1))
z
1 0.3342374
2 0.3175260
3 0.3032948
或者选择奇数行:
> df %>% slice(which(row_number() %% 2 == 0))
z
1 0.4688521
2 0.4870242
3 0.5027908
或者通过向管道添加更多信息直接获取向量:
> df %>% slice(which(row_number() %% 2 == 1)) %>% unname() %>% unlist() -> your.data
> your.data
[1] 0.3342374 0.3175260 0.3032948
> typeof(your.data)
[1] "double"