R函数正在返回“;字符(0)“;而不是基本方向
我正在尝试将风向(值0-360)转换为基本方向(即NW)。我的代码如下: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因此
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
))
}