2016-06-29 3 views
0

순수한 숫자에 누락 된 값, NA가 포함 된 문자열을 대체하고 싶습니다. 문자열 정규 표현식 ^을 시도했는데 문자열의 시작 부분에 일치하는 숫자는 [:digit:]이고 숫자는 0-9이고 +은 1 회 이상 일치하지만 작동하지는 않습니다.순전히 숫자로 문자열을 대체하는 방법은?

> a<-c("1111","A111","DD41412") 
> a[a=="^[:digit:]+"]<-NA 
> [1] "1111" "A111" "DD41412" 
+0

보조 노트를, 당신은'사용하려면 [: 자리 :]를'그렙 ("^ [', 당신은 예를 들어, 이중 괄호를 넣어야 [: digit :]] + $ ", a)'else, 그냥 대괄호 사이에있는 문자를 검사 할 것입니다 (그래서':','d', ...) – Cath

답변

3

우리는 NA와 숫자 인덱스 (우리가 grepl를 사용하는 경우 논리적 인덱스)를 기반으로 grepreplace에서 정규식 패턴을 사용할 수 있습니다.

a1 <- replace(a, grep("^[0-9]+", a), NA) 
a1 
#[1] NA  "A111" "DD41412" 
+1

감사합니다 arkun, 이 질문에 대한 귀하의 의견을 감사드립니다. 불행히도 여기에있는 사람들 중 일부는 질문에 답한대로 내 삶의 모든 이야기를 말하고 싶지 않은 경우 질문에 투표합니다. 그러나 귀하의 답변에 감사드립니다. 감사합니다 – nik

+0

@nik upvote 주셔서 감사합니다. 나는 아무 이유없이 downvotes를 얻는다. 그냥 [여기] (http://stackoverflow.com/questions/38093451/delete-nth-row-if-the-sum-of-columns-b-and-c-exceeds-the-nth-value-of- column-a/38094429 # 38094429) 심각하게 downvotes을하지 마십시오. – akrun

3

우리는이를 사용할 수 있습니다

a[!is.na(as.integer(a))] <- NA 

# [1] NA  "A111" "DD41412" 
관련 문제