如何对列表的特定索引使用lapply?

时间:2014-09-25 17:29:18

标签: r list function indexing lapply

使用lapply将函数应用于列表时,如何对列表中的其他四个元素执行此操作?

例如,如果我的长度为100的list,我如何将我的功能应用于list[1]list[5]list[9]list[13]等等?

2 个答案:

答案 0 :(得分:4)

对您感兴趣的子集使用lapply

> l <- as.list(1:15)
> lapply(l[seq(1,length(l),by=4)], identity)
[[1]]
[1] 1

[[2]]
[1] 5

[[3]]
[1] 9

[[4]]
[1] 13

或者,如果要替换原始列表中的值:

s <- seq(1,length(l),by=4)
l[s] <- lapply(l[s], function(x) x*2)

答案 1 :(得分:3)

或使用(使用@Joshua Ulrich的数据)

s1 <- (seq_along(l)-1)%%4+1==1
l[s1]
#  [[1]]
#[1] 1

#[[2]]
#[1] 5

#[[3]]
#[1] 9

#[[4]]
#[1] 13

或者

s2 <- c(TRUE, rep(FALSE,3)) # The logical index will recycle to the length of `l`

它将与下面的类似:

rep(s2, length.out=length(l))
# [1]  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE
#[13]  TRUE FALSE FALSE


l[s2]
#  [[1]]
#[1] 1

#[[2]]
#[1] 5

#[[3]]
#[1] 9

#[[4]]
#[1] 13

然后使用lapply