2013-01-03 4 views
1

공간 분석을 수행 할 때 fields 패키지를 사용하고 있습니다.패키지 필드의 R Krig 함수 오류

내 데이터 세트는 다음과 같다 :

   x  y 
Kopenhagen 12,57 55,68 
Rotterdam 4,48 51,92 
Belgrade 20,46 44,82 
Budapest 19,04 47,5 
Dublin  -6,27 53,34 
Rome  12,48 41,89 
Lisbon  -9,14 38,71 
Bucharest 26,1 44,45 
Madrid  -3,7 40,42 
Lausanne  6,63 46,52 
London  -0,13 51,5 
Kiel  10,13 54,33 
Augsburg 10,89 48,36 
Innsbruck 11,398 47,25 
Helsinki 24,94 60,17 
Lyon   4,83 45,77 
Ngreece  22,5 41,5 
Ancona  13,11 43,37 
Forde   5,9 61,44 
Warsawa  21,01 52,23 
Uppsala  17,64 59,86 
Barcelona 2,17 41,38 
Prague  14,42 50,09 

dput(map) 

structure(list(x = structure(c(6L, 18L, 11L, 10L, 21L, 5L, 23L, 
16L, 17L, 22L, 1L, 2L, 3L, 4L, 15L, 19L, 14L, 7L, 20L, 12L, 9L, 
13L, 8L), .Label = c("-0,13", "10,13", "10,89", "11,398", "12,48", 
"12,57", "13,11", "14,42", "17,64", "19,04", "20,46", "21,01", 
"2,17", "22,5", "24,94", "26,1", "-3,7", "4,48", "4,83", "5,9", 
"-6,27", "6,63", "-9,14"), class = "factor"), y = structure(c(20L, 
16L, 8L, 12L, 18L, 5L, 1L, 7L, 2L, 10L, 15L, 19L, 13L, 11L, 22L, 
9L, 4L, 6L, 23L, 17L, 21L, 3L, 14L), .Label = c("38,71", "40,42", 
"41,38", "41,5", "41,89", "43,37", "44,45", "44,82", "45,77", 
"46,52", "47,25", "47,5", "48,36", "50,09", "51,5", "51,92", 
"52,23", "53,34", "54,33", "55,68", "59,86", "60,17", "61,44" 
), class = "factor")), .Names = c("x", "y"), class = "data.frame", row.names=       
c("Kopenhagen","Rotterdam", "Belgrade", "Budapest", "Dublin", "Rome", "Lisbon", 
"Bucharest", "Madrid", "Lausanne", "London", "Kiel", "Augsburg", 
"Innsbruck", "Helsinki", "Lyon", "Ngreece", "Ancona", "Forde", 
"Warsawa", "Uppsala", "Barcelona", "Prague")) 

[1] 97.11559 59.86429 25.85145 54.56235 86.00903 17.45889 81.48449 
[8] 87.57361 68.49520 44.40894 106.80953 67.36760 77.33586 47.96955 
[15] 35.00993 75.26571 43.15965 17.55405 65.85301 46.19634 126.52848 
[22] 42.26424 53.29187 

map 전화 및 제 sigma 불리는 첫 번째 데이터 세트를 출력한다.

는이 코드 쓰기 :

fit<-Krig(map, sigma, theta=100) 

를하지만 나에게 다음과 같은 오류 제공 :

Error in signif(mat, digits) : 
    Non-numeric argument to mathematical function 

이해가 안 나는 같은 모양 내 데이터 세트의 조직으로 잘못입니다 필드 패키지 설명서에 나와 있습니다.

도움이 매우 감사합니다.

+0

'map'에는 약간의 문제가 있습니다.'dput (map)'의 출력으로 질문을 업데이트하십시오. – Julius

답변

0

열 x 및 y가 factor이기 때문에 오류가 발생했습니다. 팩터를 대략 원래 숫자 값으로 변환해야합니다.

map$x <- as.numeric(gsub(",",".", map$x)) 
map$y <- as.numeric(gsub(",",".", map$y)) 
Krig(map, sigma, theta=100) 
Call: 
Krig(x = dat2, Y = sigma, theta = 100) 

Number of Observations:    23  
Number of parameters in the null space 3  
Parameters for fixed spatial drift  3  
Model degrees of freedom:    19.2 
Residual degrees of freedom:   3.8 
GCV estimate for sigma:    9.943 
MLE for sigma:       8.931 
MLE for rho:       8808 
lambda         0.0091 
User rho        NA  
User sigma^2       NA  

지도 구조를 어떻게 읽었는지는 모르지만 숫자로 읽으면 쉽게 변환 할 수 있습니다. 예 :

map <- read.table(files,sep=',') 
+0

고맙습니다. 이제 나는 그 문제가 무엇인지를 이해한다. 그래서 R로 처리하기 전에 데이터 세트의 점으로 쉼표를 변경해야합니까? – Homap

+0

@agstudy OP가 대용 할 필요가 없습니다. 소수점 구분 기호로 유로 로캘 ("."vs ",")을 사용하고 있기 때문입니다. 항상 그렇듯이 경고 : as.numeric (as.character (my_factors))는 더 안전합니다. R-FAQ 7.10 –

+1

@CarlWitthoft 당신 말이 맞습니다! 그러나 as.numeric (as.character (my_factors))는 나를 위해 작동하지 않습니다. 나는 숫자로 수치를 읽는 것으로 전환을 피해야한다고 생각한다. – agstudy