for ループを使用せずに行列を線形補間するために、R で interp1 関数を使用しようとしています。これまでのところ、私は試しました:
bthD <- c(0,2,3,4,5) # original depth vector
bthA <- c(4000,3500,3200,3000,2800) # original array of area
Temp <- c(4.5,4.2,4.2,4,5,5,4.5,4.2,4.2,4)
Temp <- matrix(Temp,2) # matrix for temperature measurements
# -- interpolating bathymetry data --
depthTemp <- c(0.5,1,2,3,4)
layerZ <- seq(depthTemp[1],depthTemp[5],0.1)
library(signal)
layerA <- interp1(bthD,bthA,layerZ);
# -- interpolate= matrix --
layerT <- list()
for (i in 1:2){
t <- Temp[i,]
layerT[[i]] <- interp1(depthTemp,t,layerZ)
}
layerT <- do.call(rbind,layerT)
したがって、ここでは for ループ内の行列の各行で interp1 を使用しました。for ループを使用せずにこれを行う方法を知りたいです。次のように行列を転置することで、matlab でこれを行うことができます。
layerT = interp1(depthTemp,Temp',layerZ)'; % matlab code
しかし、Rでこれをやろうとすると
layerT <- interp1(depthTemp,t(Temp),layerZ)
補間結果の行列ではなく、数値配列を返します。R が補間された値の行列を返すようにするにはどうすればよいですか?