【发布时间】:2020-09-16 03:39:03
【问题描述】:
我对代码有如下问题。问题如下图。
编写一个接收数字向量并返回四分位数的基本函数(称为 getIQR) 范围(第 75 个百分位 - 第 25 个百分位)。您可以使用分位数功能。去掉上面的名字 返回的向量(即确保返回的项目没有 75% 之类的名称或类似名称)。 允许您的函数将未命名的参数传递给分位数函数。
让你的函数检查传递的值是否是数字,以及它是否适合这个参数(即是一个向量或只有一列的数据框/tibble - 不允许使用矩阵) - 如果不是,停止 函数并返回适当的消息。
注意:尝试处理一维的数据帧/小标题对我来说有点棘手。我首先检查了 如果它是一个数据框,如果是,我检查它是否只有一列。如果这两个都是真的,我转换了 该列到一个向量(使用 [[ 或拉)。然后我检查了该值是否不是数字或不是 向量。
这是我的部分代码,我不知道为什么它失败了。
# Write the function
getIQR <- function(vec){
if(!is.data.frame(vec)){
stop("This function first requires a data.frame.")
}
if(ncol(vec) != 1){
stop("This function requires only one column.")
}
if(is.data.frame(vec) && ncol(vec) == 1){
as.numeric(t(vec))
}
if(!is.numeric(vec)){
stop("This function only works for a numeric")
}
Q3 <- quantile(vec, .75)
Q1 <- quantile(vec, .25)
IQR <- Q3 - Q1
IQR
}
vec <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
getIQR(vec)
它总是说“这个函数首先需要一个data.frame。”根据注释我还应该输入什么?
非常感谢您的帮助。
【问题讨论】:
标签: r function statistics