博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笨办法学R编程(3)
阅读量:6247 次
发布时间:2019-06-22

本文共 1277 字,大约阅读时间需要 4 分钟。

 
经历了前面两个小挑战,你应该对R有点理解了。我们继续推进,今天的问题有点点复杂,复杂的不是R,而是一个数学概念:质数和质因子。任何一个合数都可以被几个质数所分解,这个很重要,我们将用它来解决Project Euler的。还是和之前一样的,你需要自己在R控制台中敲打下面这些命令,根据结果自行揣摩其用处。
# 预备练习,学习for循环、建立自定义函数和其它一些函数 for (n in 1:10) {
((n)) } x <- ('hello','world','I','love','R') for (n in x) {
(n) } x <- (from=1,to=10,=1) (x) x <- (from=1,to=10,=2) (x) x <- (from=1,to=2,length.out=10) (x) (x) x > 1.5 (x>1.5) (x>1.5) # 如何自定义一个求圆面积的函数 myfunc <- (r) {
<- pi*r^2 () } (myfunc(4)) # 同时求四个不同半径圆的面积 r <- (2,2,4,3) (X=r,FUN=myfunc) # Project Euler 3 # 找到600851475143这个数的最大质因子 # 先建立一个函数以判断某个数是否为质数 findprime <- (x) {
if (x %in% (2,3,5,7)) (TRUE) if (x%%2 == 0 | x==1) (FALSE) xsqrt <- ((x)) xseq <- (from=3,to=xsqrt,=2) if ((x %% xseq !=0)) (TRUE) else (FALSE) } # 列出1到100的质数,看函数对不对 x = 1:100 x[(x,findprime)] # 寻找最大的质因子 n <- 600851475143 for (i in (from=3, to=((n)), =2)) {
if (findprime(i) & n %% i == 0) {
n <- n / i prime.factor <- i if (i >= n) break } } (prime.factor)
最后的结果是6857。本例中除了使用for循环外,还见到了sapply函数,这是R语言中非常重要的一类向量化计算函数。求质数的方法可以参考 ,本例使用的是其中的境界4。实际上根据质因子的性质,本例不一定非要建立判断质数的函数,不过这个函数我们在后面会用到的。另外如果你想用其它软件找这个数字的质因子,也可以看看 。
from 数据科学与R语言 http://xccds1977.blogspot.com/

转载于:https://www.cnblogs.com/vivizhyy/archive/2012/09/11/2679979.html

你可能感兴趣的文章
xBIM 插入复制功能
查看>>
css 温故而知新 select-option 文字方向居右
查看>>
js中的with语句
查看>>
Android 手机卫士--签名文件说明&包名说明
查看>>
Angular2入门:TypeScript的类型 - 对象解构
查看>>
javarebel热部署 (转)
查看>>
今天折腾这么一个正则
查看>>
墨西哥旅游趣闻
查看>>
深入理解JavaScript系列(41):设计模式之模板方法
查看>>
[Flexbox] Using flex-direction to layout content horizontally and vertically
查看>>
web.xml文件的 xsd引用(或dtd引用)学习
查看>>
c#用run32dll打开系统dll(如系统图片查看器,并置最顶层)
查看>>
C#4.0中var和dynamic的区别
查看>>
C# 版本的 计时器类:精确到微秒 秒后保留一位小数 支持年月日时分秒带单位的输出...
查看>>
Redis Service
查看>>
Android中SharedPreferences使用方法介绍
查看>>
ubuntu系统备份与恢复(也适用于其他linux系统)
查看>>
kvm虚拟化管理平台WebVirtMgr部署-完整记录(1)
查看>>
mac中配置jdk环境
查看>>
EasyUI应用总结
查看>>