我有一个向量c(5, 10, 15)
,并希望使用类似seq函数的东西来创建一个新向量:5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15
。这就是我现在要做的,但它似乎不善言辞。在最终(功能)形式中,我需要增加任何给定的数字,而不一定是1的单位。
original_vec <- c(5, 10, 15)
new_vec <- unique(c(seq(original_vec[1],original_vec[2],1),seq(original_vec[2],original_vec[3],1)))
> new_vec
[1] 5 6 7 8 9 10 11 12 13 14 15
有没有办法(我确定有!)使用一个应用或类似的函数在一个向量中的多个项目之间应用一个序列,同时不重复中间的数字(在上面的情况下,10会如果不是unique
函数调用,则重复。
修改:其他一些可能的情况可能包括将c(1,5,7,10,12)
更改为1,1.5,2,2.5 ... 10, 10.5, 11, 11.5, 12
,或c(1,7,4)
,其中价格会增加,然后按间隔减少。
答案可能非常明显,我无法弄明白。我查看过手册并进行了搜索。谢谢!
答案 0 :(得分:1)
虽然这不是我原来问题的答案,但在与我的同事讨论之后,我们不会遇到seq(min(original_vec),max(original_vec),by = 0.5)的情况,并且&n #39;工作,这是最简单的答案。
然而,更广泛的答案可能是:
interval = 1
seq(original_vec[1], original_vec[length(original_vec)], by = interval)
编辑:只是想我会继续并包含成品,其中包括更大背景中的seq值,并且用于增加值和值改变方向的情况。用例是公用事业的线性插值,给出原始价格和效用。
orig_price <- c(2,4,6)
orig_utils <- c(2,1,-3)
utility.expansion = function(x, y, by=1){
#x = original price, y = original utilities
require(zoo)
new_price <- seq(x[1],x[length(x)],by)
temp_ind <- new_price %in% x
new_utils <- rep(NA,length(new_price))
new_utils[temp_ind] <- y
new_utils <- na.approx(new_utils)
return(list("new price"=new_price,"new utilities"=new_utils))
}