向量化操作的工作方式是将逻辑应用于向量的每个元素.
然而,让我们假设我有一个向量,即
> 1:10
[1] 1 2 3 4 5 6 7 8 9 10
我想对每个元素应用一个函数,比方说,乘以0.5,除了第一个和最后一个元素:我想把它们乘以0.3.
有没有一种dplyr(或任何其他矢量化的)方法来做到这一点?
我知道带有If-Else struct 的sApply可以做到这一点,即
sapply(seq(1:10), #I know seq() is not actually needed in this particular case
function(i) {
if(i == 1 | i == length(1:10)) {
(1:10)[i]*0.3
} else {
(1:10)[i]*0.5
}
}
)
...但是具有索引依赖的case_when的向量化解决方案将是好的.