R函数正在返回“;字符(0)“;而不是基本方向

R函数正在返回“;字符(0)“;而不是基本方向,r,function,R,Function,我正在尝试将风向(值0-360)转换为基本方向(即NW)。我的代码如下: DegToDer <- function(degree) { value <- as.integer((degree / 45)+ .5) direction <- c("N","NE","E","SE","S","SW","W","NW") return(direction[((value+1) %% 8)])} 非常感谢您在这个问题上提供的任何帮助 您的%%公式有点错误 degree因此

我正在尝试将风向(值0-360)转换为基本方向(即NW)。我的代码如下:

DegToDer <- function(degree) {
  value <- as.integer((degree / 45)+ .5)
  direction <- c("N","NE","E","SE","S","SW","W","NW")
  return(direction[((value+1) %% 8)])}

非常感谢您在这个问题上提供的任何帮助

您的
%%
公式有点错误


degree因此,这里的问题是R索引向量从1开始,因此如果您提供像
floor((293/45)+0.5)+1这样返回8的值,您的索引将是0,函数返回值将是
NA

你试着使用base R函数怎么样


DegToDer您需要在进行修改后添加一个(
%%
)。Mod返回0-7<代码>返回(方向[((值+1)%%8)+1])
而不是在
%%
之前!既然你已经指出了这一点,那就太明显了!我能够成功地使用cut使其在不使用函数代码的情况下工作。。。我喜欢这两种元素的结合!
> DegToDer(293)
character(0)
> DegToDer(292)
[1] "W"
> DegToDer(360)
[1] "N"
DegToDer <- function (degree) {
  return(cut(
    x = degree,
    breaks = c(0, seq(22.5, 337.5, 45), 360),
    labels = c("N","NE","E","SE","S","SW","W","NW","N"),
    include.lowest = TRUE
  ))
}