所以,我需要生成一个样条函数将它输入另一个程序,该程序只接受连续点之间的固定空间。因此,我使用R中的样条函数给定生成样条的点数,但是,浮点截止值使得点之间的空间可变,例如:
spline(d$V1, d$V2, n=(max(d$V1)-min(d$V1))/0.0200)
> head(t.spl, 7)
x y
1 2.3000 -3.0204
2 2.3202 -3.0204
3 2.3404 -3.0204
4 2.3606 -3.0204
5 2.3807 -3.0204
6 2.4009 -3.0204
7 2.4211 -3.0204
因此,第1行和第2行之间的空间为0.0202,而第4行和第5行之间的空间为0.0201。因此,由于这个问题,我正在为此样条函数提供的另一个程序,不接受这个。那么,有没有办法使这项工作?
答案 0 :(得分:2)
顺便说一句:请在下次提供可重现的示例(我无法复制/粘贴您的代码,因为我没有d
或t.spl
)
我认为您会发现不同的间隔(0.0202对0.0201)是您在屏幕上打印的字符数的假象,而不是样条函数。
似乎R在小数点后面打印4位数字,为了整洁,所以它只是为了显示结果而进行舍入。
您可以查看options('digits')$digits
显示的位数,并使用options(digits=new_number_of_digits)
进行调整(有关详情,请参阅?options
)。
例如:
options(digits=4)
pi
# 3.142
options(digits=10)
pi
# 3.141592654
总之,当您将值输入到其他程序时,请确保打印具有足够小数点的值,以便其他程序接受间隔为“相等”。
例如,如果您要写入文件,请确保写出足够的数字。如果您是从R控制台进行复制粘贴,请确保调整 R 以打印出足够的数字。
答案 1 :(得分:1)
MathematicalCoffee可能是对的。我只是为了冗长而添加一个替代方案。
myspline <- splinefun(dV$1,dV$2)
mydata.y <- myspline(desired_x_values,deriv=0)
将保证您想要的均匀x间距。