简单R代码中难以捉摸的语法错误

问题描述 投票:0回答:2

我正在从教科书中练习一个简单的R函数。我已经编写了执行正确操作的函数,但我不明白为什么我会抛出语法错误。我有一个可以正常工作的解决方案,并且两者几乎相同,所以我很好奇我的代码出了什么问题?

这是问题的要求:

写一个问候功能,说“早上好”,“下午好” 或“晚上好”,具体取决于一天中的时间。 (暗示: 使用默认为lubridate :: now()

的时间参数

我的代码:

 salutations = function(now()){
    hr = hour(now())

    if(4<= hr <= 12){
        print("Good Morning")
    } else if (13 <= hr <= 19){
        print("Good Afternoon")
    } else {
        print("Good Evening")
    }
}

解决方案代码:

 greet <- function(time = lubridate::now()) {
    hr <- lubridate::hour(time)
    # I don't know what to do about times after midnight,
    # are they evening or morning?
    if (hr < 12) {
        print("good morning")
    } else if (hr < 17) {
        print("good afternoon")
    } else {
        print("good evening")
    }
}

一些注意事项:我安装了lubridate软件包,因此即使我省略了lubridate::部分,我仍然认为它仍然可以工作。我有相同数量的括号和制表符作为解决方案。那怎么可能出问题了?

r syntax
2个回答
2
投票

首先,在代码末尾有一个额外的'}'。秒(4 <= hr <= 12)不是正确的语法。您可以将其编写为:

(hr >= 4 & hr <= 12)

1
投票

4<= hr <= 12不是有效的R语法。

可能是您想做的是:

library(lubridate)
hr = hour(now())

if(4 <= hr & hr <= 12){
  print("Good Morning")
} else if (13 <= hr & hr <= 19){
  print("Good Afternoon")
} else {
  print("Good Evening")
}
© www.soinside.com 2019 - 2024. All rights reserved.