沉闷科学的掘墓人分享 http://blog.sciencenet.cn/u/Bearjazz

博文

R语言中复合函数的数据调用顺序

已有 7294 次阅读 2012-3-26 19:05 |个人分类:我的研究|系统分类:科研笔记| R语言, 复合函数, 数据调用顺序

R语言中复合函数的数据调用顺序

 

熊荣川

六盘水师范学院生物信息学实验室

xiongrongchuan@126.com

http://blog.sciencenet.cn/u/Bearjazz

 

R语言的精髓在于大大小小,形形色色的函数可以使用,因而少不了出现复合函数的情况——函数中的变量嵌套着函数。这时候数据的调用一般遵循先内部后外部的顺序,下面是一个小小的例子供读者体会。

 

x <- c(6:-4)

为向量x赋值从6-4

x

查看x

 

[1]  6  5  4  3  2  1  0 -1 -2 -3 -4

 

 

sqrt(x)

x中的所有数据求平方根

 

[1] 2.449490 2.236068 2.000000 1.732051 1.414214 1.000000 0.000000      NaN

 [9]      NaN      NaN      NaN

警告信息:In sqrt(x) : 产生了NaNs

因为向量中部分数据为负数,出现警告信息

 

 

 

sqrt(ifelse(x >= 0, x, NA))

只对x向量中大于或等于0的数据进行平方根运算,其它的直接返回NA

 

 

[1] 2.449490 2.236068 2.000000 1.732051 1.414214 1.000000 0.000000       NA

 [9]       NA       NA       NA

结果没有警告信息,数据先是完成了ifelse()函数的运算——挑选大于或等于0的数据,然后才进行“外部”函数sqrt()的运算。所以不会出错

 

 

 

 

> ifelse(x >= 0, sqrt(x), NA)

和上个例子相比,这里刚好把“外部”函数和“内部”函数调换

 

[1] 2.449490 2.236068 2.000000 1.732051 1.414214 1.000000 0.000000       NA

 [9]       NA       NA       NA

警告信息:

In sqrt(x) : 产生了NaNs

结果出现了警告信息。原因就是sqrt()作为一个“内部”函数首先进行运算,而x中部分数据为负数不能直接进行平方根运算

 



https://blog.sciencenet.cn/blog-508298-551982.html

上一篇:R语言中三维数据的调用
下一篇:在R语言中写几个小程序
收藏 IP: 210.75.236.*| 热度|

0

该博文允许注册用户评论 请点击登录 评论 (0 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-5-11 19:18

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部