使用lapply
将函数应用于列表时,如何对列表中的其他四个元素执行此操作?
例如,如果我的长度为100的list
,我如何将我的功能应用于list[1]
,list[5]
,list[9]
,list[13]
等等?
答案 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