안녕하세요. 데이터 세트 처리에 도움이 필요합니다. 나는 14000 개의 행과 500 개의 열을 가지고 있으며 다른 열 그룹의 개별 행에 대한 첫 번째 파생 값의 최대 값을 얻으려고합니다. 내 데이터를 첫 번째 열이 변수 이름으로 데이터 프레임으로 저장했습니다. 내 데이터는 다음과 같습니다 종 열에서 각 변수에 대한 데이터 프레임의 값에 대한 최대 1 차 미분합 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
, 내가 예를 들어 Spec500에 Spec495에서 최대 유도체를 얻을 싶어요. 내가 오류를 범하기 전에 내가 한 일이다.
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
는 정말 때문에 걸리는 시간의 루프를 사용하지 않도록하고 싶었다, 그러나 이것은 7861th 값이 다음 때까지이 루프가 실행 내가 지금까지
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) + }
알고있는 유일한 방법입니다 이 오류 :
Error in smooth.Pspline(x = ux, y = tmp[, 1], w = tmp[, 2], method = method, :
NA/NaN/Inf in foreign function call (arg 6)
나는 어쩌면 plyr 패키지를 사용하여 루프를 사용하지 않도록 할 수있는 방법이있을 확신하지만 난 그렇게하는 방법을 알아낼 수 없으며, 어떤 패키지 것은 얻을 가장 좋은 것입니다 max의 값 imum 유도체.
누구든지 통찰력이나 제안을 제공 할 수 있습니까? 미리 감사드립니다.
이 게시물 http://stackoverflow.com/questions/3505701/r-을 도울 수 grouping-functions-sapply-vs-lapply-vs-apply-vs-tapply-vs-by-aggrega – dickoa
이 오류로 끝나는 7861 번째 값은 무엇입니까? 이 기능을 사용하여 별도로 실행 해 보았습니까? 왜 이것이 루프의 문제라고 생각합니까? – Arun
해당 루프의 첫 번째 줄에는 이중 할당이 있습니다. 예정된? 또한 최대 값을 원했지만 y 값은'y.data.f [j,]'행만큼 많은 원소를 가질 것입니다. –