R中向量的平方根

时间:2016-09-15 05:20:53

标签: r

我是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

可能的解决方案是什么?谢谢。

1 个答案:

答案 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}}循环,Mapifelsesapply已经是矢量化函数,等等。这是家庭作业,这取决于你已经学到的东西。