【发布时间】:2020-04-22 11:18:35
【问题描述】:
我构建了一个函数,当其中一个参数在代码中被硬编码时它可以工作,但是一旦我将它包含在参数列表中,我就会得到一个错误......我意识到这很简单,但却难倒我!
## load necessary libraries
library(gsubfn)
## number of days
days <- 5
AdDayFun <- function (inarray) {
gsubfn("^\\D*\\d+\\D*\\K(\\d+)",
~ ifelse(as.numeric(x) < 5,
sprintf("%02d",as.numeric(x)+1),
"00"),
inarray,
perl=TRUE
)
}
## initial population
pop <- matrix(c("a-00-04","a-00-00","a-00-00", "dead", "a-00-00"), nrow =1)
pop
pop <- rbind(pop, AdDayFun(pop[nrow(pop), ]))
pop
这一切都很好,直到我将函数更改为需要两个参数,然后出现错误?
AdDayFun <- function (inarray, nummax) {
gsubfn("^\\D*\\d+\\D*\\K(\\d+)",
~ ifelse(as.numeric(x) < nummax,
sprintf("%02d",as.numeric(x)+1),
"00"),
inarray,
perl=TRUE
)
}
(AdDayFun(pop[nrow(pop), ], 7))
这样的错误: ifelse(as.numeric(x)
【问题讨论】:
-
你函数中的
x是从哪里来的? -
我认为 gsubfn 来自我称为“inarray”的数组变量。德克萨斯州。 J