r语言 数据框运算符号运算?

R&逻辑运算符
R 逻辑运算符是
&,&=,&,&=,以及判断严格相等的
== 和 判断不等的 !=。
&此外,如果 c1 和 c2 是逻辑不等式,那么 c1 & c2
是它们的交集运算 (“与”),c1 | c2 是并集运算 (“或”),!c1 是 c1 的非运算。
在常规的算术运算中采用逻辑变量,它们将会被 强制转换成数值变量, FALSE 变成 0 ,TRUE 变成 1。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。R语言数值计算
R中数值计算的对象一般是向量或列表,不同长度的对象进行计算时,短的对象元素将被循环使用。
运算操作符
== != & &= & &=
& a&-c(2,49,25,8)
& b&-c(2,7,6)
[1] 1....000000
Warning message:
In a/b : longer object length is not a multiple of shorter object
无归类的函数
sign 取符号
& sign(-2:2)
[1] -1 -1 0 1 1
abs 取绝对值
sqrt 取平方根
& sqrt(-2:2)
[1] NaN NaN 0...414214
Warning message:
In sqrt(-2:2) : NaNs produced
对数与指数函数
log(x, base = exp(1)) 取base为底的对数,base缺省的情况下取自然对数
logb(x, base = exp(1)) 是为了兼容S语言而实现的log函数封装器
log10(x) 取常用对数
log2(x) 取2为底的对数
& log(64, 8)
计算log(1+x)
exp(x) 取指数
[1] 2.718282
计算exp(x) - 1
ceiling(x)
& ceiling(3.666666)
& ceiling(-3.666666)
& floor(3.666666)
& floor(-3.666666)
trunc(x, ...)
& trunc(3.666666)
& trunc(-3.666666)
round(x, digits = 0)
四舍五入,正数的digits为小数个数,负数的digits为整数的个数
& round(3.)
& round(-3.)
[1] -3.667
& round(266.6666,-2)
signif(x, digits = 6)
四舍五入,正数的digits为整数和小数的个数,负数的digits为整数的个数
& signif(3.)
& signif(-3.)
& signif(266.6666,-2)
zapsmall(x, digits = getOption("digits"))
zapsmall选取round的digits参数,以使向量中与最大绝对值相比接近0的数值被剃掉
& zapsmall
function (x, digits = getOption("digits"))
&if (length(digits) == 0L)
&&stop("invalid 'digits'")
&if (all(ina &- is.na(x)))
&&return(x)
&mx &- max(abs(x[!ina]))
&round(x, digits = if (mx & 0) max(0L, digits -
log10(mx)) else digits)
sin(x) 正弦函数
& sin(pi/6)
cos(x) 余弦函数
tan(x) 正切函数
asin(x) 反正弦函数
& asin(0.5) #-&pi/6
[1] 0.5235988
acos(x) 反余弦函数
atan(x) 反正切函数
atan2 反正切函数
atan2(y, x)=atan(y/x).
sinpi(x) 正弦函数
sinpi(x)=sin(pi*x)
& sinpi(1/6)
cospi(x) 余弦函数
cospi(x)=cos(pi*x)
tanpi(x) 正切函数
tanpi(x)=tan(pi*x)
sinh(x) 双曲正弦函数
sinh(x)=(exp(x)-exp(-x))/2
& sinh(pi/6)
[1] 0.5478535
& (exp(pi/6)-exp(-pi/6))/2
[1] 0.5478535
cosh(x) 双曲余弦函数
cosh(x)=(exp(x)+exp(-x))/2
tanh(x) 双曲正切函数
tanh(x)=sinh(x)/cosh(x)
asinh(x) 反双曲正弦函数
acosh(x) 反双曲余弦函数
atanh(x) 反双曲正切函数
max(..., na.rm = FALSE)
& max(5:1, pi) #-& one
min(..., na.rm = FALSE)
& min(5:1, pi) #-& one
pmax(..., na.rm = FALSE)
取并行最大值
& pmax(5:1, pi) #-& 5
[1] 5.....141593
pmin(..., na.rm = FALSE)
取并行最小值
& pmin(5:1, pi) #-& 5
[1] 3.....000000
range(..., na.rm = FALSE, finite = FALSE)
返回含最大值和最小值的向量
& x &- c(NA, 1:3, -1:1/0);
[1] NA 1 2 3 -Inf NaN Inf
& range(x)
& range(x, na.rm = TRUE)
[1] -Inf Inf
& range(x, finite = TRUE)
which.min(x)
返回最小值下标
& x &- c(1:4, 0:5, 11);x
[1] 1 2 3 4 0 1 2 3 4 5 11
& which.min(x)
which.max(x)
返回最大值下标
& x &- c(1:4, 0:5, 11);x
[1] 1 2 3 4 0 1 2 3 4 5 11
& which.max(x)
any(..., na.rm = FALSE)
任一个元素值为真则返回TRUE;
所有元素值为假则返回FALSE;
na.rm参数为FALSE时,没有元素值为真且数据中有NA值则返回NA
& any(c(-2:0)&0)
& any(c(1:2,NA)&0)
& any(c(-2:0,NA)&0)
all(..., na.rm = FALSE)
所有元素值为真则返回TRUE;
任一个元素值为假则返回FALSE;
na.rm参数为FALSE时,没有元素值为假且数据中有NA值则返回NA
& all(c(1:2)&0)
& all(c(-2:0,NA)&0)
& all(c(1:2,NA)&0)
sum(..., na.rm = FALSE)
任一个元素值为NA则返回NA;
元素不含NA,任意元素值为NaN则返回NaN;
元素不含NA和NaN,返回元素和,NULL视为整数0
& sum(1:3)
& sum(1:3,NA)
& sum(1:3,NaN)
& sum(1:3,NaN,NA)
prod(..., na.rm = FALSE)
任一个元素值为NA则返回NA;
元素不含NA,任意元素值为NaN则返回NaN;
元素不含NA和NaN,返回元素乘积,NULL视为数字0
& prod(1:3)
& prod(1:3,NA)
& prod(1:3,NaN)
& prod(1:3,NaN,NA)
cumsum 取累计和
遇到NA或NaN元素,返回NA
NULL元素会被忽略掉
& cumsum(1:5)
[1] 1 3 6 10 15
& cumsum(c(1:3,NA,4:5))
[1] 1 3 6 NA NA NA
& cumsum(c(1:3,NaN,4:5))
[1] 1 3 6 NA NA NA
& cumsum(c(1:3,NULL,4:5))
[1] 1 3 6 10 15
cumprod 取累计乘积
遇到NA或NaN元素,返回NA
NULL元素会被忽略掉
& cumprod(1:5)
[1] 1 2 6 24 120
cummin 取累计最小值
如果累计最小值不为NA,遇到NaN元素输出NaN;
遇到NA元素输出NA
NULL元素会被忽略掉
& #对于列表元素3 2 1 2 1 0 4 3
2,cummin第四个输入为2,
& #比累计最小值1大,所以第四个输出为1
& cummin(c(3:1, 2:0, 4:2))
[1] 3 2 1 1 1 0 0 0 0
& cummin(c(3:1, NaN, 2:0, NA,
[1] 3 2 1 NaN NaN NaN NaN NA NA NA NA
cummax 取累计最大值
如果累计最小值不为NA,遇到NaN元素输出NaN;
遇到NA元素输出NA
NULL元素会被忽略掉
& #对于列表元素3 2 1 2 1 0 4 3
2,cummin前六个输出都为第一个输入3,
& #第七个输入为4,比累计最小值3大,所以第七个输出为4
& cummax(c(3:1, 2:0, 4:2)) #3 2 1 2 1 0 4 3
[1] 3 3 3 3 3 3 4 4 4
& cummax(c(3:1, NA, 2:0, NaN,
[1] 3 3 3 NA NA NA NA NA NA NA NA
和相关函数
此外,还有函数:
besselI(x, nu, expon.scaled = FALSE)
besselK(x, nu, expon.scaled = FALSE)
besselJ(x, nu)
besselY(x, nu)
其中,排列组合函数choose和阶乘函数factorial比较常用。
Re(z) 取实部
Im(z) 取虚部
Mod(z) 取模
Arg(z) 取幅角
Conj(z) 共轭复数
对于一个复数z=x + iy,
r=Mod(z)=√(x^2+y^2),
φ=Arg(z),
x=r*cos(φ)且y=r*sin(φ)
& 1:2 + 1i*(8:9)
[1] 1+8i 2+9i
& z &- complex(real = 1:3, imaginary =
[1] 1+7i 2+8i 3+9i
[1] 7...486833
[1] 1...249046
[1] 1-7i 2-8i 3-9i
& x &- c(1:5, 5:3);x
[1] 1 2 3 4 5 5 4 3
[1] 3 4 5 5 4 3 2 1
sort(x, decreasing = FALSE, ...)
向量、列表或因子排序
& x &- c(1:5, 5:3);x
[1] 1 2 3 4 5 5 4 3
[1] 1 3 4 15 92
order(..., na.last = TRUE, decreasing = FALSE)
次序下标,可用于多个变量,例如数据框
第一个输出为5,是由于第五个输入按增序排第一
& set.seed(1)
& x &- sample(1:10, 5);x
[1] 3 4 5 7 2
& order(x)
[1] 5 1 2 3 4
rank(x, na.last = TRUE,
ties.method = c("average", "first", "random", "max", "min"))
& set.seed(1)
& x &- sample(1:10, 5);x
[1] 3 4 5 7 2
[1] 2 3 4 5 1
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。1925人阅读
R语言基本运算符
& & & & & & 描述
& x&+&y
& x&%/%&y &
& &整数除法
& &判断是否相等
& &判断是否小于等于
& &判断是否大于等于
& &标量的逻辑“与”运算
& &标量的逻辑“或”运算
& &向量的逻辑“与”运算(x、y以及运算结果都是向量) & & & & & & & & & & & & & & & & & &
& &向量的逻辑“或”运算(x、y以及运算结果都是向量)
& & R语言表面上没有标量的类型,因为标量可以看作是含有一个元素的向量,但我们看到表中,逻辑运算符对标量和向量有着不同的形式,这虽然看起来很奇怪,但这种区别很有必要。
&&x&&-&c(&TRUE,&FALSE,&TRUE&)
&&y&&-&c(&TRUE,&TRUE,&FALSE&)
[1]&&TRUE&FALSE&FALSE
&&x[1]&&&&y[1]
&&if(&x[1]&&&&y[1]&)&&&print(&&both&TRUE&&)
[1]&&both&TRUE&
&&if(&x&&&y&)&&&print(&&both&TRUE&&)
[1]&&both&TRUE&
Warning&message:In&if&(x&&&y)&print(&both&TRUE&)&:&&the&condition&has&length&&&1&and&only&the&first&element&will&be&used
& & 问题的关键在于,if结构条件判断语句的取值,只能是一个逻辑值,而不是逻辑值的向量,这也是为什麽前面这个例子会出现警告提示,因此“&”和“&&”这两种运算符的存在是有必要的。
& & 逻辑值TRUE和FALSE可以缩写为T和F(两者都必须大写),而在算术表达式中,它们会转换为1和0。
&&(&1&&&2&)&*&(&3&&&4&)
&&(&1&&&2&)&*&(&3&&&4&)&*&(&5&&&2&)
&&(&1&&&2&)&==&TRUE
&&(&1&&&2&)&==&1
?创建自己的二元运算符
&&&&可以创建自己的二元运算符,只要写一个名称是以%开始和结束的函数。函数的两个参数都是某种数据类型,并返回同样类型的值。
&&&%a2b%&&&-&function(&a,&b&){
+&&&&&return&(&a&+&2&*&b&)
&&3&%a2b%&5
&&相关文章推荐
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:47673次
排名:千里之外
原创:60篇后使用快捷导航没有帐号?
用R语言计算微积分
查看: 5944|
评论: 0|来自: 互联网
摘要: R语言是一个优秀的统计计算环境,但它能计算微积分吗?回答是:这个可以有。虽然在这方面R比不上Mathmatica或是Matlab,不太复杂的问题仍然能解决。以下图为例,我们希望计算两个简单问题,一个是sin函数在x=4处的导 ...
是一个优秀的统计计算环境,但它能计算微积分吗?回答是:这个可以有。虽然在这方面R比不上Mathmatica或是Matlab,不太复杂的问题仍然能解决。以下图为例,我们希望计算两个简单问题,一个是sin函数在x=4处的导数。另一个问题是计算sin(x)在0到pi之间的曲线下面积。第一个问题用D运算子得到符号运算结果,然后代入数值即可得到最后结果
dx &- (((x)),'x')
slope &- (dx)
第二个问题可以用integrate函数直接求出数值积分((x) (x),0,pi)数值积分的另一种是蒙特卡罗仿真,得到的结果相当接近x &- (100000,=0,=pi)y &- (100000)pi*(y<SIN(x))/100000上面的图形是用扩展包绘制的,用到的代码如下:()intercept &- (4)-slope*4
x &- (from=0,to=2*pi,=0.01)
p &- ((x,y),aes(x,y))
p + geom_area(fill=alpha('blue',0.3))+
geom_abline(intercept=intercept,slope=slope,linetype=2)+
scale_x_continuous(breaks=(0,pi,2*pi),=('0',(pi),(2*pi)))+
geom_text(=T,aes(x=pi/2,y=0.3,label='integral(sin(x)*dx, 0, pi)'))+
geom_line()+
geom_point(aes(x=4,y=(4)),size=5,colour=alpha('red',0.5))
刚表态过的朋友 ()}

我要回帖

更多关于 r语言 集合运算 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信