2015-07-20 13 views
12

Jestem nowy dla R i chciałem zastąpić kropki w "2014.06.09" do "2014-06-09". Używam do tego funkcji gsub(). Jeśligsub() w R nie zastępuje "." (kropka)

> x="2014.06.09" 
> gsub('2','-',x) 
[1] "-014.06.09" 

Ale gdy próbuję

> gsub('.','-',x) 
[1] "----------" 

zamiast "2014-06-09".

klasa PS (x) jest „znak”

Może niektórzy sugerują mnie sposób, aby uzyskać to prawo, a także dlatego, że nie pracuje dla „” (Kropka)

Odpowiedz

30

Może trzeba będzie uciec . która jest specjalny znak, który oznacza "dowolny znak" (z komentarzem @Mr Flick'S)

gsub('\\.', '-', x) 
#[1] "2014-06-09" 

Albo

gsub('[.]', '-', x) 
#[1] "2014-06-09" 

Albo jak @ Moix wspomniany w komentarzach, możemy również użyć fixed=TRUE zamiast uciekać od znaków.

gsub(".", "-", x, fixed = TRUE) 
+0

Nie musisz uciekać w ciągu '[]' ??? Nie wiedziałem, że ... – drmariod

+1

@drmariod Tak, to jest alternatywa – akrun

+4

Lub użyj 'fixed = TRUE' który nie używa regex, ale zamiast tego po prostu szuka znaków. 'gsub (". "," - ", x, poprawiono = T)' – Molx