我的目标是使用设定值平滑曲线。为此,我目前在曲线中的点之间生成一个矢量,如下所示:
> y.values <- c(values[1], mean(values[1:2]), values[2], ...)
这不是最简单的说法(这个片段只是两个数字之间!)。我需要一种更好的方法来生成具有已知非线性值的向量,并在每个值之间插入一个值,如下所示:
> values
[1] 1 2 4 6 9
> y.values <- magic(values)
> y.values
[1] 1 1.5 2 3 4 5 6 7.5 9
这个问题感觉基本但我研究了它,似乎无法为我的非线性向量找到合适的方法,任何帮助都表示赞赏。谢谢你的阅读。
答案 0 :(得分:1)
也许不是最优雅的方式,但它有效:
values <- c(1,2,4,6,9)
#lapply is used to create the mean values and those get merged
#in between your values inside the function
a <- c(unlist(lapply( 1:(length(values)-1 ), function(x) c(values[x],(values[x]+values[x+1])/2))),
values[length(values)])
输出:
> a
[1] 1.0 1.5 2.0 3.0 4.0 5.0 6.0 7.5 9.0
或作为一项功能:
magic <- function(x) {
c(unlist(lapply( 1:(length(x)-1 ), function(z) c(x[z],(x[z]+x[z+1])/2))),
x[length(x)])
}
> magic(values)
[1] 1.0 1.5 2.0 3.0 4.0 5.0 6.0 7.5 9.0