0

こんにちは。データセットの処理について助けを求めています。14000 行と 500 列があり、異なる列グループの個々の行の一次導関数の最大値を取得しようとしています。最初の列が変数の名前であるデータフレームとしてデータを保存しています。私のデータは次のようになります。

 Species   Spec400   Spec405   Spec410   Spec415
1  AfricanOilPalm_1_Lf_1 0.2400900 0.2318345 0.2329633 0.2432734
2 AfricanOilPalm_1_Lf_10 0.1783162 0.1808581 0.1844433 0.1960315
3 AfricanOilPalm_1_Lf_11 0.1699646 0.1722618 0.1615062 0.1766804
4 AfricanOilPalm_1_Lf_12 0.1685733 0.1743336 0.1669799 0.1818896
5 AfricanOilPalm_1_Lf_13 0.1747400 0.1772355 0.1735916 0.1800227

種列の各変数について、たとえば Spec495 から Spec500 への最大導関数を取得したいと考えています。これは、エラーが発生する前に行ったことです。

x<-c(495,500,505,510,515,520,525,530,535,540,545,550)##get x values of     reflectance(Spec495 to Spec500)

y.data.f<-hsp[,21:32]##get row values for the required columns

y<-as.numeric(y.data.f[1,])##convert to a vector, for just the first row of data

library(pspline) ##Using a spline so a derivative maybe calculated from a list of   numeric values

時間がかかるため、ループの使用を本当に避けたかったのですが、これがこれまでのところ私が知っている唯一の方法です

for(j in 1:14900)
+ { y<-as.numeric(y.data.f[j,]) + a1d<-max(predict(sm.spline(x, y), x, 1))
+     write.table(a1d, file = "a1-d-appended.csv", sep = ",", 
+ col.names = FALSE,   append=TRUE) + }

このループは 7861 番目の値まで実行され、次のエラーが発生します。

Error in smooth.Pspline(x = ux, y = tmp[, 1], w = tmp[, 2], method = method,  : 
NA/NaN/Inf in foreign function call (arg 6)

おそらくplyrパッケージを使用して、ループの使用を回避する方法があるに違いないと確信していますが、その方法も、最大導関数の値を取得するのに最適なパッケージもわかりません。

誰でも洞察や提案を提供できますか? 前もって感謝します

4

1 に答える 1