r - 如何在这里设置条件函数参数值?
问题描述
我想根据另一个参数的值自动设置函数中参数的值。
更具体地说,我想设置一个时区值(offset
)来自动调整给定的时间值region
。
但是,我的实现似乎不起作用(因为永远不会应用偏移量,除非我专门将它作为参数传递给函数)。
部分功能(应该)offset
根据region
's 的值设置值,并连接到相应的 Elasticsearch 服务器。
这就是我所拥有的:
if (region == "EU") {
offset = "+00:00:00"
# Code to connect to EU ElasticSearch server
} else if (region == "US") {
offset = "-06:00:00"
# Code to connect to US ElasticSearch server
} else {
paste0(stop("Incorrect region supplied: ", region))
}
功能:
time_function <- function(region, retailer, start_date, end_date, offset = "+00:00:00"){
# Function body
}
(注意我已经设置了offset
to的默认值"+00"
,否则会抛出参数丢失的错误。)
显然我在某个地方出错了,因为除非我在参数列表中明确指定,否则永远不会应用偏移量。
这就是我想要做的:
如果region == "US"
, 则设置offset
为"-06:00:00"
, Else 如果region == "EU"
, 则设置offset
为"+00:00:00"
ElseError message: "supply valid region"
简而言之,我希望设置一个条件参数值。
我怎样才能做到这一点?
解决方案
你的代码工作。
> time_function <- function(region){
+ # Function body
+ if (region == "EU") {
+ offset = "+00:00:00"
+ # Code to connect to EU ElasticSearch server
+ } else if (region == "US") {
+ offset = "-06:00:00"
+ # Code to connect to US ElasticSearch server
+ } else {
+ stop(paste0("Incorrect region supplied: ", region))
+ }
+
+ return(offset)
+ }
>
> time_function("EU")
[1] "+00:00:00"
> time_function("US")
[1] "-06:00:00"
> time_function("CH")
Error in time_function("CH") : Incorrect region supplied: CH
要优化您的代码,您可以使用该开关。
> time_function <- function(region){
+ # Function body
+ offset <- switch(region,
+ EU = "+00:00:00",
+ US = "-06:00:00",
+ stop(paste0("Incorrect region supplied: ", region)))
+
+ return(offset)
+ }
>
> time_function("EU")
[1] "+00:00:00"
> time_function("US")
[1] "-06:00:00"
> time_function("CH")
Error in time_function("CH") : Incorrect region supplied: CH
有两个参数:
> time_function <- function(region){
+ # Function body
+ list2env(switch(region,
+ EU = list(offset = "+00:00:00", con = "EU_con"),
+ US = list(offset = "+00:00:00", con = "US_con"),
+ stop(paste0("Incorrect region supplied: ", region))), envir = environment())
+
+ return(c(offset, con))
+ }
>
> time_function("EU")
[1] "+00:00:00" "EU_con"
> time_function("US")
[1] "+00:00:00" "US_con"
> time_function("CH")
Error in list2env(switch(region, EU = list(offset = "+00:00:00", con = "EU_con"), :
Incorrect region supplied: CH
推荐阅读
- shell - 删除图案上方的线
- python - 我们如何访问具有相同名称的python中的方法和变量?
- go - Go 中通过 new(Type) 和 &Type{} 分配内存的区别
- r - 在 GGPLOT2 中的条形顶部添加计数
- android - 如何在 Jetpack Compose 中创建国家代码选择器
- c - C语言基本注册系统中的一些逻辑错误
- javascript - React native onPress = 更改图像的源代码
- c++ - 面对这个名为freetime的问题。我尝试使用向量然后设置
- python - df.to_excel("Filename.xlsx") 不会使用 Visual Studio Code 生成新的 excel,但可以使用 Atom?为什么?
- amazon-ec2 - MariaDB 因信号量等待而崩溃