Joh*_*lee 4 r vector subset lapply
我有一个向量列表(mylist):
a <- c(1,2,3,4)
b <- c(5,6,7,8)
c <- c(9,10,11,12)
mylist <- list(a,b,c)
Run Code Online (Sandbox Code Playgroud)
我也有一个位置向量(mypos):
mypos <- c(1,2,3)
Run Code Online (Sandbox Code Playgroud)
我想用它mypos来给元素的位置分配每个向量的子集,mypos以便它返回:
[1] 1 6 11
Run Code Online (Sandbox Code Playgroud)
我试过像这样使用lapply:
lapply(mylist, "[", mypos)
Run Code Online (Sandbox Code Playgroud)
但这会返回每个向量的元素1,2和3:
[[1]]
[1] 1 2 3
[[2]]
[1] 5 6 7
[[3]]
[1] 9 10 11
Run Code Online (Sandbox Code Playgroud)
我也尝试过:
lapply(mylist, subset, mypos)
Run Code Online (Sandbox Code Playgroud)
但是这会返回一个错误,该子集必须是逻辑的
我们可以用来Map从'mypos'的索引中提取'mylist'的相应元素
Map(`[`, mylist, mypos)
Run Code Online (Sandbox Code Playgroud)
在OP的代码中,在每个list元素中重复'mypos',从而从索引中提取所有元素.相反,它可以按顺序循环
lapply(seq_along(mylist), function(x) mylist[[x]][mypos[[x]]])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
579 次 |
| 最近记录: |