全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 R语言论坛
6128 5
2014-02-05
各位好,如下语句
复制代码

就会产生如下错误:

Warning message:In sqrt(x) : NaNs produced
如果使用



复制代码

就没有问题。

能否解释一下为什么,谢谢!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2014-2-5 16:43:19
有意思,同问。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-5 17:16:08
ifelse语句 是向量化运算,看代码 rep(...)[...],
当 x < 0 时,sqrt(x) 会出现警告出现 NaN.
而 x^0.5, 会直接NaN, 不会警告。

在向量运算时,都进行计算, 取值时,只取逻辑是(那些NaN都值就替掉了)个人认为,欢迎补充。

过年来论坛打打酱油,
        烧五花肉了。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-5 17:24:51
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-5 18:36:23
谢谢楼上两位,新年快乐。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2014-2-5 19:50:17
ifelse(x <=1, x^2, sqrt(x))
##or
ifelse(x <=1, x^2,x^0.5)

##那个ifelse语句可以表示为下面向量的形式
ans <- NULL ##or  ans <- x <=1
ans[x<=1] = rep(x^2,length.out=length(x<=1))[x<=1]
ans[!x<=1] = rep(x^0.5,length.out=length(x<=1))[!x<=1]
ans

##再看看 rep(x^0.5...当x<0,x^0.5有NaN,不警告, 而sqrt(x),会警告,本质没有区别。
rep(x^0.5,lenght.out=length(x<=1))
##or
rep(sqrt(x),length.out=length(x<=1))

###具体看 ifesle 代码。感觉ifelse 的效率不会比 常用的 if .. else...效率高。
###新年第一帖,认真图个吉利。大家马年吉祥。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群