2014-12-18 25 views
2

我在使用汽車包重新編碼功能時遇到了一個反覆出現的問題。如果我重新建立一個公開使用的例子(http://susanejohnston.wordpress.com/2012/07/18/find-and-replace-in-r-part-1-recode-in-the-library-car/重新編碼字符串時,汽車包中的重新編碼會返回意外符號

做:

y <- sample(c("Perch", "Goby", "Trout", "Salmon"), size = 10, replace = T) 
y1 <- recode(y, "c("Perch", "Goby") = "Perciform" ; c("Trout", "Salmon") = "Salmonid"") 

它返回:

Error: unexpected symbol in "y1 <- recode(y, "c("Perch"

我運行v 3.1.0和使用car_2.0-22

我假設頁面的作者能夠完成他們發佈的操作,但我無法重新創建它,這與我的數據中存在的問題相同。思考?

+2

作者形容這是一個愚蠢的證據,這很有趣。 – 2014-12-18 22:53:32

+0

@MrFlick不是一個謊言,一個錯誤。固定鏈接錯誤。感謝您舉報。 – susjoh 2014-12-19 00:36:44

回答

3

我是wordpress文檔的作者 - 代碼是錯誤的,並感謝標記問題。

問題是car :: recode語法需要單引號而不是雙引號(或者請參閱下面的@MrFlick對其他可接受語法的評論)。

y1 <- recode(y, 'c("Perch", "Goby") = "Perciform" ; c("Trout", "Salmon") = "Salmonid"') 
y1 

[1] "Perciform" "Salmonid" "Perciform" "Salmonid" "Salmonid" "Perciform" "Salmonid" "Perciform" 
[9] "Salmonid" "Perciform" 

應該工作。

+2

它不是那麼需要一個單引號,你只需要正確編碼你的引號。你可以通過轉義來加入雙引號:'recode(y,「c(\」Perch \「,\」Goby \「)= \」Perciform \「」)'但當然這很麻煩。或者你可以包裝單打和雙打。 'recode(y,「c('Perch','Goby')='Perciform'」)'。 – MrFlick 2014-12-19 00:38:02