我是R的初学者。为了解决下面的问题而奋斗。
创建一个新的R函数getRoot(),它将提供任意的平方根 数。如果数字为负数,则应返回“不可能”。 展示您的功能,使其产生以下输出。
getRoot(c(4,-4,9,-16))= 2'不可能'3'不可能'
我写了以下代码:
"getRoot" <- function(x){
res <- as.vector(x)
if(res < 0) {
cat("not Possible")
}else return(sqrt(res))
}
getRoot( c(4,-4,9,-16))
[1] 2 NaN 3 NaN
可能的解决方案是什么?谢谢。
答案 0 :(得分:0)
返回向量c(4, 'not possible', 3, 'not possible')
是不可能的,因为这样的向量不存在。向量中的所有元素必须属于同一类型。当然,您可以一起输出数字。这是一个简单的练习,可以通过多种方式解决。出于教学目的,我提出以下建议,其中两个问题以非常实用的方式分为两个功能:
getSingleRoot <- function(x){
if(x<0){
cat("not possible ")
return(NaN)
}
else{
cat(sqrt(x))
cat(" ")
return(sqrt(x))
}
}
getRoot <- Vectorize(getSingleRoot)
a <- getRoot(c(4, -4, 9, -16))
其他好的解决方案可以使用for
的{{1}}循环,Map
或ifelse
,sapply
已经是矢量化函数,等等。这是家庭作业,这取决于你已经学到的东西。