2014-04-24 4 views
2

의 내가 dataframe df의 열 '이름을'있다고 가정 해 봅시다 : 나는 name의 모든 행 여부를 확인하려면,방법 열의 모든 행에 확인

apple 
apple123 
app 
be 
aple 

및 열에는 apple이라는 단어가 있습니다. 내가 한 방법은 grepl, grepl('apple',df$name)을 사용하는 것이고 'TRUE','TRUE','FALSE','FALSE','FALSE'을 반환하기를 기대했지만 대신 5 'FALSE'을 반환했습니다.

여기에 아무런 오류가 없으면 grep, 어떤 기능을 사용해야합니까?

+3

당신은해야합니다 'dput (df)'의 출력을 제공합니다. 내가 dat'-data.frame을 할 때 (name = c ("apple", "apple123", "app", "be", "aple")); grepl ("apple", dat $ name)'나는'[1] TRUE TRUE FALSE FALSE FALSE'를 말합니다. – hrbrmstr

+0

hrbrmstr 감사합니다! grepl()은 그 일을합니다. 실제 사례는 인코딩과 관련이 있습니다. 아래 내 의견을 참조하십시오. 일이 잘못되었다고 생각됩니다. – user3569522

답변

2

나는 그것을 실행 얻을 잘

dat <- c('apple', 'apple123', 'app', 'be', 'aple') 
grepl('apple', dat) 
[1] TRUE TRUE FALSE FALSE FALSE 
dat[grepl('apple', dat)] 
[1] "apple" "apple123" 

이 당신이 할 경우 동일하다 정확하게 data.frame

dat <- data.frame(v=c('apple', 'apple123', 'app', 'be', 'aple')) 
grepl('apple', dat$v) 
[1] TRUE TRUE FALSE FALSE FALSE 

와 동일

with(dat, grepl('apple', v)) 
+0

Paulo에게 감사드립니다. 예, grepl은 영어로 잘 작동하지만 일본어에서는 작동하지 않는 것 같습니다. 나는이 예제를 단순하게 유지하기 위해 예제를 위조했다. 나의 실제 사례는 grepl()을 사용하여 데이터 프레임의 각 행에 "하로워"가 포함되어 있는지 확인하려고했다는 것이다. grepl()을 사용하는 것보다는 인코딩 문제라고 생각합니다. – user3569522

+0

@ user3569522 일본어 문자가 항상 짧은 단어 나 짧은 문구를 표현하지는 않습니까? 이것은 더 어려워 야합니다. –

관련 문제