2015-06-22 267 views
0

我有以下功能:功能不正確加載

histogram <- function() 

eucaris_countries <- c("NL", "B") 
counter_eucaris = 0 
counter_niet_eucaris = 0 

ikr_set <- read.csv2("IKR data.csv", header = T) 

for (i in 1:nrow(ikr_set)){ 
if (ikr_set$LAND_HERK %in% eucaris_countries) { 
    counter_eucaris + 1 
} 
else { 
    counter_niet_eucaris +1 
} 
counter_eucaris 
} 

應該做到以下幾點:

  1. 讀入.csv文件
  2. 遍歷每一行和檢查是否行的列名稱$ LAND_HERK等於一個矢量「eucaris_countries」中的項目
  3. 將1加到變量counter_eucaris/counter_not_eucaris(取決於列nam e在矢量中包含一個名稱。

當我嘗試加載腳本我得到一個錯誤,但是:

Error in match(x, table, nomatch = 0L) : object 'eucaris_countries' not found 

我不明白是怎麼回事錯在這裏...有什麼想法?

+4

你在函數結尾的函數後面加了一個開放括號嗎? –

+0

@JohnPaul,謝謝你的幫助!然而,當我現在執行函數時,我得到:1:In if(ikr_set $ LAND_HERK%in%eucaris_countries){: 該條件的長度大於1且只有第一個元素將被使用。有什麼想法這裏出了什麼問題? – user3706202

+0

您正在將'ikr_set $ Land_HERK'中的所有值與'eucaris_countries'進行比較,因此有整個值。如果你真的想循環播放,我想你需要'irk_set $ Land_HERK [i]'。 –

回答

1

你真的需要一個功能來做你想做的事嗎?它看起來像你試圖計算一個變量在一個向量元素中(而不是在)的行數。你可以用這樣的代碼來做到這一點......

# example fake data 
ikr_set <- data.frame(LAND_HERK=c("A", "B", "B", "B", "C", "C", "NL")) 
# elements of interest 
eucaris_countries <- c("NL", "B") 

sum(ikr_set$LAND_HERK %in% eucaris_countries) 
sum(!(ikr_set$LAND_HERK %in% eucaris_countries))