2017-12-13 3 views
0

オートコレクトとして機能する関数を作成しようとしています。基本的にはスクリプトのどこかでユーザーが変数に色を割り当て、その関数がその色の一般的なスペルミスの一覧に含まれているかどうかをチェックし、正しいスペルを割り当てます。関数の入力オプションの選択方法

colour <- "grene" 

間違って綴られる:

autocorrect = function(variable = variable) { 
if (variable %in% c("grren", 
        "geen", 
        "freen", 
        "grees", 
        "grean", 
        "geren", 
        "gren", 
        "breen", 
        "gree", 
        "greeny", 
        "genn", 
        "greeen", 
        "grenn", 
        "greena", 
        "dreen", 
        "greent", 
        "greeg", 
        "greetn", 
        "greem", 
        "tgreen", 
        "greenly", 
        "agreen", 
        "grene", 
        "treen", 
        "greean", 
        "greesn", 
        "3green", 
        "reen", 
        "greeno", 
        "greeb", 
        "grrens")) { 

variable <- "green" 
    } 
} 

は、その後、ユーザは、色を割り当てます。関数は、正しいスペルに色を再割り当てします。

colour 
"green" 

さまざまな変数名を入力として使用するにはどうすればよいですか?例えば、私が持っている場合:任意の助けが理解されるであろう

autocorrect(colour1) 

colour1 <- "grene" 
colour2 <- "grean" 

は次にそれをのようなものを使用します。

+0

あなたの機能は、現時点では 'return'ない何かを行いますが、いずれにしても、それをベクトル化しようとする、すなわち'オートコレクト< - ベクタライズ(オートコレクト); autocorrect(c( 'grean'、 'greeg')) ' – Sotos

答えて

0

returnの値を関数に追加する必要があります。補正された色または色が一致しない場合は、他の戻り値を返します。このパラメータは、str(文字列)など、variableより意味のあるものとも呼ばれる必要があります。ここで改訂された機能は次のとおりです。

autocorrect = function(str) { 
    if (str %in% c("grren", 
         "geen", 
         "freen", 
         "grees", 
         "grean", 
         "geren", 
         "gren", 
         "breen", 
         "gree", 
         "greeny", 
         "genn", 
         "greeen", 
         "grenn", 
         "greena", 
         "dreen", 
         "greent", 
         "greeg", 
         "greetn", 
         "greem", 
         "tgreen", 
         "greenly", 
         "agreen", 
         "grene", 
         "treen", 
         "greean", 
         "greesn", 
         "3green", 
         "reen", 
         "greeno", 
         "greeb", 
         "grrens")) { 

    return("green") 
    } else { 
    return(str) 
    } 
} 

これは、パラメータとして文字列を受け取り、それがオートコレクトリストに見つからない場合は補正後の値、または元の文字列を返します。一致しない場合は、NAなどの返品を検討することもできます。

いくつかのサンプル出力:

> autocorrect("grene") 
[1] "green" 
> autocorrect("banana") 
[1] "banana" 
> colour1 <- "grene" 
> colour2 <- "grean" 
> autocorrect(colour1) 
[1] "green" 
> autocorrect(colour2) 
[1] "green" 
> 
+0

これは動作しますが、strを再割り当てしません。 strが次のように再割り当てされる方法はありますか:str < - "green" –

+0

一般に、関数は値を "再割り当て"せず、値を "戻します"。ですから 'oldColour < - " grene "'のようなものがあれば 'newColour < - autocorrect(oldColour)'と言うことができます。これにより、「newColour」に「緑色」が割り当てられます。もちろん 'oldColour < - autocorrect(oldColour)'と言うこともできます。これは完全に有効で、自動修正された値を変数 'oldColour'に割り当てます。これは、あなたがしたいことをカバーしていますか? –

+1

Yesss !!本当にありがとうございます、あなたがそれに言及した今、実際には明らかです! –

関連する問題