R语言基础编程技巧汇编 - 4

本文深入探讨编程基础知识,包括余数运算、威布尔分布、对话框应用、数据读取、圆形绘制、Kronecker积、字符串合并、双曲线回归、坐标转换、数据去重、优化与最小值求解、矩阵秩计算、点连接方法、数组合并等关键编程技能。通过实例解析,助您提升编程能力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

46.       求余数

“%%”是求余

“%/%”是整除

 

47.      威布尔分布

x <- seq(0,5,0.01)
d <- dweibull(x, 2, 1)
plot(x, d, type = "l")


48.      询问对话框

winDialog("yesno", "Is it OK to delete file?")
 

49.       read.table函数设置各列数据类型

 read.table("filename", colClasses=c("numeric", "character",  ....)) 
 

50.       绘制圆形

library(plotrix)

draw.circle

plot(1:5,seq(1,10,length=5),type="n",xlab="",ylab="",main="Testdraw.circle")

draw.circle(2,4,c(1,0.66,0.33),border="purple",col=c("#ff00ff","#ff77ff","#ffccff"),lty=1,lwd=1)

draw.circle(2.5,8,0.6,border="red",lty=3,lwd=3)

draw.circle(4,3,0.7,border="green",lty=1,lwd=1)

draw.circle(3.5,7,0.8,border="blue",lty=2,lwd=2)


 

51.      Kronecker积

base包中的kronecker()函数可以计算

52.       用paste函数合并字符串

A <- c('a','b')
B <- c('c','d')
paste(A,B,sep = '')
[1] "ac" "bd"

53.       用lm函数做双曲线回归

现在回归方程如下:Y=A+B/X
lm(y~I(1/x))R命令里带表达式,需要用I()

54.       极坐标跟直角坐标转换

library(IDPmisc)
 
#极坐标转成直角坐标
xy <- clock2cart(rho=rep(1,33),phi=seq(0,to=360,len=33),circle=360)
#直角坐标转成极坐标
rhophi <- cart2clock(xy$x,xy$y,circle=360)
 

55. attach和detach函数的解释

使用attach(dataframe)以后,调用该数据就不用输入dataframe的名字了,可以让代码更简洁,比如以前是dataframe$gdp,现在gdp就能调用了。使用detach(dataframe)则可以取消上面的效果。
但是,不推荐这样使用,因为会带来不可预测的错误,例如dataframe中有和全局变量同名的变量时,可能会出错。

56. 使用unique函数删除重复数据 

A <- c(rep(1,10),rep(2,10),rep(3,10))

unique(A)

[1] 1 2 3

 

57. optimizenlm函数求极值点

base包的optimize函数可以求一元函数极小值。

例子:

(1-x)^2+4极小值。

f=function(x)(1-x)^2+4

optimize(f,c(0,2))

minimum

[1]1

objective

[1] 4

 

nlm函数可以求多元函数极小值。

 

例子:

100*x1-x2^2^2+(1-x1)^2的极小值

>f=function(x){f<-c(10*(x[2]-x[1]^2), 1-x[1]);sum(f^2)}

> nlm(f,c(-1.5,1))

minimum 

[1] 3.983443e-12                                     #极小值estimate

[1] 0.999998 0.999996                           #极小值点

gradient[1]−3.358886e−07  1.721028e−07code

[1] 1

$iterations

[1] 23

58. 求矩阵的秩

qr()$rank

59. segments连接图中的点

x <-stats::runif(12); y <- stats::rnorm(12)

i <- order(x, y);x <- x[i]; y <- y[i]

plot(x, y, main ="arrows(.) and segments(.)")

## draw arrows frompoint to point :

s <-seq(length(x)-1)  # one shorter than data

arrows(x[s], y[s],x[s+1], y[s+1], col= 1:3)

s <-s[-length(s)]

segments(x[s], y[s],x[s+2], y[s+2], col= 'pink')

 

60. 合并两个数组

按行合并rbind()
按列合并cbind()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值