2016-05-28 13 views
0

私はifステートメントを関数に書き込もうとしています。 (どちらもXYは、列名のように与えられている)Rファンクション変数を渡すためのIf文

f <- function(y,x,data){ 
    if (x=="all"){something<-y+2}else{something<-y+5} 
} 

が、私はエラーを取得する:それはどちらかのように、data.frameにデータセットまたはすべての変数から変数のカップルすることができx変数のためです:

"the condition has length > 1 and only the first element will be used"

+1

実例/サンプルデータセットを提供してください。 – coatless

+0

これは通常、 'if'の代わりに' ifelse'(ベクトル化されています)を使用する必要があるときに発生するエラーですが、データ/コンテキストなしで言うのは難しいです。 – alistaire

答えて

1

論理比較の仕組みについて説明します。これにより、問題を解決するのに役立ちます。

論理演算をifステートメントなしで使用すると、これが表示されます。

c("a","b","c","a") == "a" 
[1] TRUE FALSE FALSE TRUE 

ただし、if文内で論理演算を使用すると、動作が異なります。この例のように最初の要素のみを使用します。

if(c("a","b","c","a") == "b"){print("exist")}else{print("not exist")} 
[1] "not exist" 

if(c("a","b","c","a") == "a"){print("exist")}else{print("not exist")} 
[1] "exist" 

私はあなたがlength()%in%を使用する必要がありますと仮定します。

関連する問題