2015-06-22 8 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. Loop через каждую строку и проверить, является ли имя столбца строки $ 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)) 
Смежные вопросы