2016-04-13 6 views
0

xが4の場合、「変数」を1に変更したいと考えています。 実行後変数はまだゼロです。私は"print (i)" を含むようにして、forループがxの "4"に到達するかどうかを確認しましたが、 "1"だけが でした。だから、for-loopは1つ以上の実行を行わないようです.... 誰かがこのコードで何が間違っているのかを教えてもらえますか?特定の部分文字列が見つかった場合に変数を変更します(forループを介して)

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

使用を使用し、 '' length' – Frank

+1

おかげでフランクないnchar'、簡単な交換 "nchar"が機能しました! – Alias

答えて

5

ちょうどgrepl(それはbaseにあります)

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

あなたはstringrパッケージからstr_detect()を使用することができます。

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

良いですが、1Lと0Lのような整数はバイナリ変数のfloatよりも優れています。 'as.integer(str_detect(x、" 4 "))'や 'grepl'と同様のことができます。 – Frank

関連する問題