2017-06-12 8 views
-1

の場合、Rの次のベクトルを例に考えてみましょう:x <- 2*c(1:100)R:forループを含むRの関数を定義し、条件が

今、私はx >= 0 & x < 1場合のxの値x[1] = 2を達成すべき段階的に機能を定義したい '、xのx[2] = 4x >= 1 & x < 2場合は、' ....

I tried to do this with the following code: 

y <- 2*c(1:100) 

f <- function(x){for(i in 1:100){if((x >= i-1) & (x < i)){y[i]} 
           } 
       }  

これは動作しませんでした - 何です私のコードに間違っていますか?

ありがとうございます。

+1

、より効率的であるuがあれば、(X akrun

+1

を表示することができますTRUEまたはFALSEの出力が1つだけでなければならないが、xのすべての値に対して実行されるベクトル化されたブール値を持つため、関数はどちらの値を使用するかを決めることができません(最初のものを使用します)。 –

+0

Ok - では、どうやって階段状の関数を定義するのですか? (この例では1:100の例として) – Obriareos

答えて

0

最初に、ifの条件の終了括弧がありません。それは次のようにする必要があります:すべての

if((x >= i-1) & (x < i)) 

第二に、あなたの関数は、引数としてだけでなく、外部のベクトルの名前としてx使用しています。それは混乱している。

すべての第三に、

function(y) x[floor(y)] 

+0

これは役に立ちました、ありがとうございました。 – Obriareos

関連する問題