2014-11-19 2 views
-1

Это кодошибка в случае() аргумент нулевой длины в R

`

< региона - "Арлингтон"

< данные -read.csv (" city_markets. CSV ")

для (я в 1: длина (данные [[1]])) {

, если (GREP (область, as.character (данные [[3]] [I]), я gnore.case = TRUE) == 1) {

for(j in 1:length(data)){ 
    write(data[[j]][i],"analyzed.txt",append=TRUE) 
    } 
} 

} `

теперь, что я пытаюсь сделать здесь я доступ к колонку в формате CSV (в третьих один) и сравнение это с указанным регионом! я получаю ошибку

Ошибка в случае (GREP (область, as.character (данные [[3]] [I]), ignore.case = TRUE) ==:

Аргумент длина нулевой

+0

попробовать с 'grepl' вместо' grep' – Cath

+0

или добавить 'длину()' 'для grep' результата? –

ответ

3

Чтобы подробно немного мой комментарий и @Adii_ «ы:

при использовании grep, то результат будет„позиция“элементов, которые удовлетворяют условию ... так„ничего“, если нет совпадения (следовательно, сообщение об ошибке).

Используя grepl, вы получите TRUE или FALSE, которые вы можете использовать в своем заявлении if.

Что касается length(grep(...)), то результат будет 0, если совпадений не найдено, что соответствует FALSE для if заявления, или положительное целое число (1 в вашем случае, потому что вы тестируете только один элемент), если есть соответствует TRUE для оператора if.

+0

thanx CathG за предложение использовать grepl. но по какой-то причине я нашел решение, удалив индексы из моей команды grepl (или grep). –

0

это решить мою проблему:

region<-"ARLINGTON" 

data<-read.csv("city_markets.csv") 

for(i in 1:length(data[[1]])){ 

a<-as.character(data[[3]][i]) 

if(grepl(region,a,ignore.case=TRUE)){ 
for(j in 1:length(data)){ 
    write(data[[j]][i],"analyzed.txt",append=TRUE) 
    } 
} 

} ` 
Смежные вопросы