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

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

看到各位对“笨办法系列”的东西还比较感兴趣,我也很乐意继续写下去。今天的示例将会用到数据框(data.frame)这种数据类型,并学习如何组合计算两个向量,以及如何排序。我们将用所学的东西来解决Project Euler的,就是找出一个集合中最大的回文数。回文数是指一个像1534351这样“对称”的数,如果将这个数的数字按相反的顺序重新排列后,所得到的数和原来的数一样。开始啦!
# 预备练习 x <- y <- 1:9  <- (x=x,y=y) () z <- $x * $y # 一个九九乘法表 z <- (z,=9) (1) x <- ((10),2) (x) (x) x[(x)[1]] (x) x[(x)] x[(x)] y <- 1:10  <- (x,y) () () [1,] [,1] $x [($x),] # Project Euler 4 # 在两个三位数字的乘积中,找出最大的回文数 # 先建立一个将数字顺序进行反转的函数 reverse <- (n) {
reversed <- 0 while (n > 0) {
reversed <- 10 * reversed + n %% 10 n <- n%/%10 } (reversed) } # 从大到小搜索回文数
x <- y <- 999:100  <- (x=x,y=y) $prod <- $x * $y  <- [($prod,decreasing=T),] ()
value <- $prod for (i in 1:(value)) {
isequal <- (value[i] == reverse(value[i])) if (isequal) {
([i,]) break }}
得到的结果是906609,本例是先将乘积排序后再判断是否回文数,找到的第一个就是答案,所以速度会快一点。如果不用expand.grid函数的话,可以利用嵌套for来组合计算。另外还有一种作法是利用R本身的rev函数,先将数字转为字符,再切开成一串向量,用rev反转后判断。
from 数据科学与R语言 http://xccds1977.blogspot.com/

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

你可能感兴趣的文章
js原生封装getClassName()方法-ie不支持getElementsByClassName,所以要自己实现获取类名为className的所有元素...
查看>>
设计师给了px显着的单位,Android要设置多少开发商dip、dp、sp?
查看>>
快速入门:十分钟学会Python(转)
查看>>
Android4.2.2由于越来越多的物理按键(frameworks)
查看>>
C++ friend 用法汇总
查看>>
Java:正则表达式的详解
查看>>
【转】互联网时代的关键人物:大公司的小领导
查看>>
Android有效解决加载大图片时内存溢出的问题
查看>>
WPF笔记(2.7 文字布局)——Layout
查看>>
Java finally语句到底是在return之前还是之后执行?
查看>>
GPUImage API文档之GLProgram类
查看>>
C# 断点续传原理与实现
查看>>
C#中使用命名管道进行进程通信的实例
查看>>
Lintcode: Minimum Subarray
查看>>
内存问题 动态加载地址和运行时地址
查看>>
LINK : fatal error LNK1181: 无法打开输入文件“..\..\lib\Release\opencv_ocl249.lib”
查看>>
更改MySQL数据文件目录位置
查看>>
android假设重写onDraw实现一个相似TextView能够显示表情和链接的控件(二)
查看>>
Java魔法堂:注解用法详解——@SuppressWarnings(转)
查看>>
unity, GUIStyle and Skin
查看>>