2014-09-10 17 views
1

我在Mac上使用R 2.11,但我已經安裝了3.1.1版本。R和3.1.1的平均值和barplot故障

lala.csv是含有七個變量與每個85個觀測的數據幀,其中一些的NA

下面的代碼完全正在運行:

lala <- read.table("lala.csv", header=TRUE, sep=";", strip.white=TRUE, dec=".", 
na.strings="NA") 
mean(lala, na.rm=TRUE) 
barplot(mean(lala, na.rm = TRUE)) 

但它不是了。

現在它返回的

In mean.default(lala, na.rm = TRUE) : argument is not numeric or logical: returning NA

我已閱讀有關的事實,read.csv /表並不如以前的工作均值(),所以我試圖

lala <- read.table("lala.csv", header=TRUE, sep=";", strip.white=TRUE, dec=".", 
        na.strings="NA", colClasses=c("numeric", "numeric", "numeric", 
               "numeric","numeric", "numeric", 
               "numeric")) 

但是當我嘗試

is.numeric(lala) 

它返回FALSE

最後,用下面的工作,並與sapply

colMeans(lala, na.rm=TRUE) 
barplot(colMeans(lala, na.rm=TRUE)) 

但對我來說這是一個無感的功能意味着不會再對數據幀的工作。 有沒有其他的方法來得到我所擁有的?

謝謝

+1

你能解釋一下爲什麼要更新你的代碼來使用' colMeans()'而不是'mean()'...? (你是否有一個巨大的代碼庫,難以更新,或者你是否受限於更新它?)如果你真的想要你可以編寫你自己的'mean'函數來屏蔽基本R中的函數,但這可能是一個壞主意。 – 2014-09-10 22:42:34

+1

詳細閱讀「?mean」這個x參數的描述;或創建自己的數據框的意思,正如@BenBolker指出的,「mean.data.frame < - function(x,na.rm = FALSE)colMeans(x,na.rm)',then'mean(lala,na .rm = TRUE)'會按預期工作 – rawr 2014-09-10 23:20:26

+0

@BenBolker是第一個原因:)。我將與colMeans()站在一起,我只是想知道是否有一種方法可以使事情像以前一樣工作,例如在調用read.table時。謝謝 !也rawr – lizrell 2014-09-11 09:37:42

回答

1

過去和現在的R型鐵芯決定擺脫mean.data.frame。他們給出了警告(無論何時使用)它在幾個版本中被棄用,並最終殺死它(幾個版本之前)。如果您沒有定期更新,那麼您看不到警告。 (這與Mac上無關,對於SnowLeopard而言,R 3.1.1在這方面與3.1.1相比有所不同。)

+0

好的謝謝你的解釋。 – lizrell 2014-09-11 09:38:53