gpt4 book ai didi

r - 用常数(自然数)展开数值向量元素

转载 作者:行者123 更新时间:2023-12-01 08:23:44 27 4
gpt4 key购买 nike

给定一个向量 v <- c(1, 10, 22)和一个常数自然数说c <- 3如何扩展v在大小为 c 的窗口中使用整数.所以向量会变成w (即 1 每边扩展三个整数,整数 -2、-1、0、1、2、3、4):

> w
[1] -2 -1 0 1 2 3 4 7 8 9 10 11 12 13 19 20 21 22 23 24 25

最佳答案

另一种方法是

c(t(sapply(-c:c, `+`, v)))
#[1] -2 -1 0 1 2 3 4 7 8 9 10 11 12 13 19 20 21 22 23 24 25

这对于大型 v-vector 更有效,因为 sapply 循环仅遍历 -c:c 而不是 v 的每个元素。一个简单的比较表明:

set.seed(1)
v <- sample(1e6)
system.time(unlist( Map(`:`, v-c, v+c))) # akrun 1
# User System verstrichen
# 1.518 0.067 1.595
system.time(c(sapply(v, function(x) (x-c):(x+c)))) # akrun 2
# User System verstrichen
# 1.564 0.074 1.652
system.time(c(t(sapply(-c:c, '+', v)))) # docendo
# User System verstrichen
# 0.082 0.024 0.106
system.time(c(mapply(seq, v-c, v+c))) # 989
# User System verstrichen
# 7.132 0.123 7.292

关于r - 用常数(自然数)展开数值向量元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44282590/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com