2012-08-02 14 views
17

Dizgimde alt çizgiden önce alt dizeyi kaldırmaya çalışıyorum. "Ben de "^ * " ya da benzeri şeyler denedikGsub ile ipekten desen kalıbı çıkarın

> a 
[1] 5 7 

: gibi görünmelidir

a <- c("foo_5", "bar_7") 

a <- gsub("*_", "", a, perl = TRUE) 

sonucu: Ben değişebilir çizgi önce bit olarak * (joker) kullanmak istiyorum ? "ama gerçekten işe yaramadı.

cevap

34

Aşağıdaki kod örneği çalışır:

gsub(".*_", "", a) 
+0

büyük teşekkür. Ne yapar '.' anlamına mı? Yıldız "*" (joker) neden kendi başına çalışmıyor? Ben anlamıyorum – user969113

+4

'. herhangi bir karakter anlamına gelir, böylece ". *" herhangi bir karakterin herhangi bir sayısını gösterir. '? Regex' yazarak daha fazla açıklama bulabilirsiniz. – Pop

+1

Ah görüyorum! Düşündüm de, '.' zaten! Eh, şimdi daha iyi biliyorum. Tekrar teşekkürler! – user969113

4

Alternatif olarak, deneyebilirsiniz:

gsub("\\S+_", "", a) 
-4
as.numeric(gsub(pattern=".*_", replacement = '', a) 
[1] 5 7 
+2

Daha iyi bir anlayış için kodun yanı sıra cevabınıza her zaman açıklama ekleyin – bigbounty