-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 中的一个字符串中,这样无论 x 和 y 具有我创建的“程序”的任何值都会给出相应的最终标记。

我已经尝试了很多方法来做到这一点,但 R 每次都会出错。我很肯定这是一个编码错误(用户错误),但尽管谷歌搜索;翻阅参考书,我就是无法让它发挥作用。

我认为问题是我了解逻辑运算符是如何工作的 - 但不是如果逻辑运算符给出 TRUE 以及如何将其放入一个程序中,如何获得正确的公式以执行最终标记

我最近的尝试如下:

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

它只使用一个ifelse命令:

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

一行(假设您希望y像在代码尝试中那样输出第三个条件):

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