-5

私はRを使用するのは非常に初めてで、以下に本当に苦労しています-どんな助けでもありがたいことに受けられます。

試験とコースワーク(x&y)から合計点を計算する必要があり、次の基準に基づいてこれを計算するには、Rの論理演算子を使用する必要があります。

If exam mark is >=50 then the final mark is 0.2x * 0.7y
If exam mark is <50 > 70 then the final mark is y+10
If exam mark is <50 <70 then the final mark is R.

私の問題は、上記の3つの基準すべてをRの1つの文字列にまとめて、作成した「プログラム」の値xとyに対応する最終的なマークが付けられるようにする必要があることです。

私はこれを行うための多くの方法を試しましたが、Rは毎回エラーになります。私はそれがコーディングエラー(ユーザーエラー)であると確信していますが、グーグルにもかかわらず。参考書を調べてみると、うまく機能しません。

問題は、論理演算子がどのように機能するかを理解していることだと思いますが、論理演算子がTRUEを与えた場合に実行される最終マークの正しい式を取得する方法と、これを1つのプログラムに入れる方法はわかりません。

私の最近の試みは以下の通りです:

finalmark <- ((y>=50) <- (0.2*x+0.8*y)) |((y<=50 & x>70) <- (y+10)) |((y<=50 & x<70) <-    (y))

私は過去4日間、これを正しくしようとしてきました。誰かが私を助けてくれるか、正しい方向に私を向けることができれば、私は本当に感謝しています!

4

3 に答える 3

2
finalmark <- 
    # test if a condition is true..
    ifelse( 
        # here's the condition..
        y >= 50 , 
        # ..and if it is, set `finalmark` equal to this.
        0.2 * x * 0.7 * y , 
        # ..otherwise, if the condition is false..
        ifelse( 
            # test out this nested condition..
            y < 50 & x > 70 ,
            # and if THAT is true, set `finalmark` equal to this
            y + 10 ,
            # ..otherwise, if the second condition is also false..
            ifelse( 
                # test if this second nested condition is true
                y <= 50 & x < 70 ,
                # and if THAT is true, set `finalmark` equal to this
                y ,
                # otherwise, set `finalmark` equal to MISSING
                NA

    # close all of your parentheses
    # out to the same level as before.
            )
        )
    )
于 2013-02-05T17:33:16.850 に答える
0

y1行として(コードの試行と同じように3番目の条件を出力したいと仮定します):

finalmark <- ifelse(y>=50, 0.2*x+0.8*y, ifelse(x>70, y+10, y))
于 2013-02-05T17:35:49.927 に答える
0

ifelse次の 1 つのコマンドだけで機能します。

finalmark <- ifelse(y >= 50, 0.2 * x + 0.8 * y, y + 10 * (x > 70))
于 2013-02-05T18:44:00.957 に答える