对于“Baltimore homicides”的数据集 需要创建一个带有字符串的函数,例如“shoot”,并返回一个整数表示“拍摄”受害者的数量。 我写了以下函数,但收到错误
错误:“}”中的意外“}”
错误:找不到对象'counti'
我也无法弄清楚 == Null 是否正确
count <- function(cause = NULL) {
## Check that "cause" is non-NULL; else throw error
if cause==NULL
{
stop()
print("no cause provided")
}
## Read "homicides.txt" data file
homicides <- readLines("homicides.txt")
## Extract causes of death
i <- grep(cause, homicides) ##get indices of cause
counti <- lenghth(i) ##get count of indices
## Check that specific "cause" is allowed; else throw error
if counti=0
{
stop()
print("no such cause")
}
## Return integer containing count of homicides for that cause
return(counti)
}
这是我编辑后的工作功能,谢谢你们
count <- function(cause = NULL) {
if(missing(cause) | is.null(cause)) stop("no cause provided")
homicides <- readLines("homicides.txt")
i=length(grep(cause, homicides))
if(i==0) stop("no cause found")
return(i)
}
答案 0 :(得分:4)
通过这样做,您可以将功能简化为2行:
count <- function(cause = NULL, data) {
if(is.null(cause)) stop("no cause provided")
length(grep(cause, data))
}
data <- c("murder", "some other cause")
count("murder", data)
[1] 1
请注意以下原则:
另外,请保留stop()
以获得真正致命的错误。在数据中找不到搜索字符串不是错误,它只是意味着找不到原因。您不希望代码停止。最多发出message()
或warning()
。