2017-09-04 3 views
0

いくつかの変数を含む関数を記述しています。どのように自動的に "NULL"として渡されるか、あるいはそれらが定義/宣言されていない場合にはデフォルトとして無視されます。関数を作成し、欠落している変数を無視するか、欠損変数をNULLにデフォルトで宣言します。

combine <- function(GroupOne, GroupTwo) { 
        paste(GroupOne, GroupTwo)} 

実施例1についてのみ定義GroupOne

GroupOne <- "a" 

結果

combine() 
"a" 

例2:定義GroupOneとGroupTwo両方

GroupOne <- "a" 
GroupTwo <- "b" 

結果

combine() 
"ab" 

"missing"、 "exists"、 "hasArg"という機能を組み合わせようとしましたが、まだ成功していません。あなたの洞察を聞きたいです!

前もって感謝して乾杯!

+3

明らかにあなたがあなたの質問に示すコードのいずれかを実行していません。 'print(combine)'は関数のソースコードを表示し、 'paste'はそれ以上の引数なしで値の間にスペース文字を入れます。あなたの質問を書いてもう少し時間をかけてください。あなたが何を求めているのかは不明です。 –

+0

すみません。実際のスクリプトを単純化する私のせいです。私はそれを修正しました:-) – BINewbies

+2

いいえ。実際にあなたのRコンソールで 'combine()'を実行しましたか?人々があなたを助けるのを助ける。ジェリーマグワイアそれ。 –

答えて

0

私が正しく理解していれば、次のようにしてください。

機能を構築するとき、あなたはデフォルトでNULLに変数を設定することができます
combine <- function(GroupOne, GroupTwo) { 
    if(missing(GroupOne)) GroupOne <- NULL 
    if(missing(GroupTwo)) GroupTwo <- NULL 
    paste(GroupOne, GroupTwo) 
} 

combine() 
character(0) 

GroupOne <- "a" 
combine(GroupOne) 
[1] "a " 
+0

私はこのエラーが発生しました 'missing'は、スクリプトの適用時に ' 'の引数にのみ使用できます。 – BINewbies

+0

@BINewbies私と一緒に働きます。 (私はそれをテストしました)あなたはそれをコピーしてそのまま貼り付けていますか? 'GroupOne'と' GroupTwo' *はどちらも引数です。 –

1

GroupOne <- "a" 
GroupTwo <- "b" 

combine <- function(GroupOne=NULL, GroupTwo=NULL){ 
    if(is.null(GroupOne) | is.null(GroupTwo)){ 
    paste0(GroupOne, GroupTwo) 
    } else { 
    paste(GroupOne, GroupTwo) 
    } 
} 

combine() 
character(0) 

combine(GroupOne) 
"a" 

combine(GroupOne,GroupTwo) 
"a b" 
関連する問題