2016-04-13 27 views
0

x içeriyorsa, "değişkeni" 1 olarak değiştirmek istiyorum. 4. Yazdığım bu kod işe yaramıyor çünkü değişken hala sıfırdır. For döngüsünün x cinsinden "4" değerine ulaşıp ulaşmadığını görmek için "print (i)"'u dahil etmeye çalıştım, ancak sadece "1" basılmış. Bu nedenle, for-loop, bir seferden daha fazlasını yapmayacak gibi görünüyor .... Birisi bu kodun nesi yanlış olduğunu söyleyebilir mi?Belirli bir alt dizgi bulunduğunda değişkeni değiştirin (for döngüsü için)

x=22356478998 
    variable=0 
    for(i in 1:length(x)){ 
    if(substr(x,start=i,stop=i)=="4"){ 
     variable=1 
     break 
    } 
    } 
+1

Kullanım 'nchar' değil' length' – Frank

+1

Teşekkür Frank grepl kullanmak basit değiştirme "nchar" çalıştı! – Alias

cevap

5

Sadece (o base öyle)

variable = as.integer(grepl("4", x)) 
2

Sen stringr paketinden str_detect() kullanabilirsiniz:

library(stringr) 
x=22356478998 
variable <- ifelse(str_detect(x, "4"), 1, 0) 
+0

Güzel, ancak 1L ve 0L gibi tamsayılar, bir ikili değişken için yüzenlerden daha iyidir. "Grepl" ile ya da "as.integer (str_detect (x," 4 "))' i veya benzerlerini yapabilirsiniz. – Frank