美好的一天,我在寻找一些帮助处理我的数据集。我有14000行和500列,我试图获得不同列组中单个行的一阶导数的最大值。我将数据保存为数据框,第一列是变量的名称。我的数据是这样的:数据帧中的值的最大一阶导数R
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) + }
直到那时7861th值获得的唯一途径这个循环运行起来这个错误:
Error in smooth.Pspline(x = ux, y = tmp[, 1], w = tmp[, 2], method = method, :
NA/NaN/Inf in foreign function call (arg 6)
我相信一定有避免使用一个循环,也许使用plyr包的方式,但我无法弄清楚如何做到这一点,也没有哪个软件包将是最好的获得最大值亚姆派生。
任何人都可以提供一些见解或建议吗?在此先感谢
这篇文章可以帮助http://stackoverflow.com/questions/3505701/r- grouping-functions-sapply-vs-lapply-vs-apply-vs-tapply-vs-by-vs-aggrega – dickoa
那么,在这个错误中结束的第7861个值是什么?你有没有尝试单独运行这个功能?你为什么认为这是循环的问题? – Arun
您在该循环的第一行中有一个双赋值。意?此外,你说你想要的最大值,但是看起来你的y值将会与'y.data.f [j,]' –