2015-10-31 12 views
6

matplot kullanarak, bu 3 sütunları bölerek airquality data.frame'nin 2., 3. ve 4. sütunlarını çizmeye çalışıyorum airquality'un ilk sütunu. Ncol (xj) hatası: R matplot() kullanırken nesne 'xj' bulunamadı

Ancak bir hata

Error in ncol(xj) : object 'xj' not found 

Neden bu hatayı alıyorsanız alıyorum? Aşağıdaki kod bu sorunu yeniden üretecektir.

attach(airquality) 
airquality[2:4] <- apply(airquality[2:4], 2, function(x) x /airquality[1]) 
matplot(x= airquality[,1], y= as.matrix(airquality[-1])) 

cevap

7

Verilerinizi ilgi çekici bir şekilde yönetmeyi başardınız. Karışmadan önce airquality ile başlayarak. (Ve attach() lütfen - bu kafa karıştırıcı/gereksiz ve bazen tehlikeli.)

str(airquality) 
'data.frame': 153 obs. of 6 variables: 
$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ... 
$ Solar.R: int 190 118 149 313 NA NA 299 99 19 194 ... 
$ Wind : num 7.4 8 12.6 11.5 14.3 14.9 8.6 13.8 20.1 8.6 ... 
$ Temp : int 67 72 74 62 56 66 65 59 61 69 ... 
$ Month : int 5 5 5 5 5 5 5 5 5 5 ... 
$ Day : int 1 2 3 4 5 6 7 8 9 10 ... 

Eğer

airquality[2:4] <- apply(airquality[2:4], 2, 
          function(x) x /airquality[1]) 

Eğer

'data.frame': 153 obs. of 6 variables: 
$ Ozone : int 41 36 12 18 NA 28 23 19 8 NA ... 
$ Solar.R:'data.frame': 153 obs. of 1 variable: 
    ..$ Ozone: num 4.63 3.28 12.42 17.39 NA ... 
$ Wind :'data.frame': 153 obs. of 1 variable: 
    ..$ Ozone: num 0.18 0.222 1.05 0.639 NA ... 
$ Temp :'data.frame': 153 obs. of 1 variable: 
    ..$ Ozone: num 1.63 2 6.17 3.44 NA ... 
$ Month : int 5 5 5 5 5 5 5 5 5 5 ... 
$ Day : int 1 2 3 4 5 6 7 8 9 10 ... 

veya

sapply(airquality,class) 
##  Ozone  Solar.R   Wind   Temp  Month   Day 
##  "integer" "data.frame" "data.frame" "data.frame" "integer" "integer" 
olsun yaptıktan sonra

, you have data frames embedded within your data frame!

rm(airquality) ## clean up 

Şimdi Genelde

airquality[,2:4] <- apply(airquality[,2:4], 2, 
         function(x) x/airquality[,1]) 
matplot(x= airquality[,1], y= as.matrix(airquality[,-1])) 

daha güvenli (... bir vektör değil uzunluğunda bir listesi ile böl) sütuna göre airquality[,1] yerine airquality[1] daha bir karakter bölün değiştirmek Ne yaptığınızı gerçekten bilmedikçe, bir veri çerçevesinin sütunlarına başvurmak için indeksleme yerine [, ...] endekslemeyi kullanmak için ...

+0

Güzel yanıt. Belki de 'uygulamak' 'matris' ve 'dizi' nesneleri için vurgulanmalıdır; Burada kullanmak için doğru işlev, “hava kalitesi” bir “data.frame” (ve dolayısıyla bir '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '] 'dır. Ya da başlayacak olan nesne matrisine zorlanabilir (burada amaç anlamlıdır, çünkü amaç "matplot" olarak adlandırılmaktır). – nicola

İlgili konular