R语言 如何保留大于或小于特定数值的行

如下所示:

newdata<-subset(x, x$var > 某一数字)

x为矩阵 var是其中的一个变量

补充:r语言 循环次数超过了50这个最大值_错过了520还可以一起过儿童节,如何用R语言‘撸'一个文字跑马灯去表白...

引言

和大家分享一下如何用R语言来写一个文字跑马灯吧。这个文字跑马灯写起来基本不费时间,在办公室摸一下鱼大概就够了。

正文

这个文字跑马灯我准备按照面向对象编程来写。因为,面向对象就会有对象。而且,这个东西写出来就是拿给你们去表白的。

首先我们定义一个基类,这个基类要具有像PPT一样的逐页播放文字的功能。

#' @title projector
projector <- R6::R6Class(
 classname = "projector",
 public = list(
  initialize = function(sildes) { # 构造函数
   private$slides <- sprintf("r%s",sildes) # 给每页文字的开始加上'r'字符以覆盖上一页
   private$length <- base::length(private$slides) # 记录所有的播放页数量
   private$position <- 0 # 初始播放位置为第一页之前
   private$slide <- private$slides[private$position]
  },
  nextslide = function(){ # 播放下一页
    private$position <- private$position + 1 # 获取下一页位置
    if ( private$position > private$length ){ # 播放到最后一页后回到第一页
      private$position <- private$position - private$length
    }
    private$slide <- private$slides[ private$position ] # 设置当前播放页为下一页
    base::cat(private$slide) # 播放当前播发页
  },
  autoplay = function(fps = 10){ # 自动播放,播放速率每秒10页
    while(T){ # 无限循环,可以用for改写控制循环次数
      self$nextslide() # 播放下一页
      base::Sys.sleep(1/fps) # 休眠控制播放速率
    }
  }
 ),
 private = list(
  slide = NA,# 当前播放页
  slides = c(), # 所有的播放页
  length = 0,# 播放页的总数
  position = 0# 当前播放位置
 )
)
#' @test
player <- projector$new(c("我是第一页","我是第二页","我是第三页"))
player$nextslide() # 播放下一页
player$nextslide()
player$nextslide()
player$nextslide()
player$autoplay(3) # 以每秒三张的速率播放,可以使用 Ctrl+C 组合键 跳出

利用这个文字PPT播放器,我们只要设置好播放页就可以实现文字跑马灯了。比如:

player2 <- projector$new(
 c(
  "我是第一页    ",
  "是第一页    我",
  "第一页    我是",
  "一页    我是第",
  "页    我是第一",
  "    我是第一页",
  "   我是第一页 ",
  "  我是第一页  ",
  " 我是第一页   ",
  "我是第一页    " # 最后一页的下一页是第一页,让播放页闭环以到达流畅的视觉效果
 )
)
player2$autoplay(3)

当然我们不需要那么傻的的每次都手动设置播放页。接下来,我们从PPT文字播放器这个基类派生一个类,这个派生类新增了根据跑马灯文字自动设置播放页的功能。

#' @title scroller
scroller <- R6::R6Class("scroller",
 inherit = projector,
 public = list(
  initialize = function(film, width = 50 ) { # 重载基类的构造函数,根据输入的文字和宽度自动设置播放页
    film <- paste0( base::strrep(" ",width), film,base::strrep(" ",width), collapse="" )
    slides <- rep( base::strrep(" ",width) , nchar(film)-width+1 )
    for( i in 1:length(slides) ){
      slides[i] <- substr(film,i,i+width-1)
    }
    super$initialize(slides)
  }
 )
)
#' @test
boy <- scroller$new("你可真是个小可爱! 不如...  和我在一起吧^_^",50) # 设置播放页的宽度为50
boy$autoplay(10) # 以每秒10页的速率播放
girl <- scroller$new("哈哈哈*—* 我就知道你喜欢我! 好吧,我就勉强答应你咯~",50) # 设置播放页的宽度为50
girl$autoplay(10) # 以每秒10页的速率播放

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • R语言 实现将数据框中的字符类型数字转换为数值

    场景1 我现在有一个数据框datexpr,里面的数字都是以字符型表示的,像这样 > datexpr[1,1] [1] " 1.143773961" 现在我想把这个数据框中的字符型数字全部转为数值型数字 使用下面语句即可 datexpr2=as.data.frame(lapply(datexpr,as.numeric)) 现在再次查看,就是数值型啦,整个数据框中的内容也都是数值型的啦 > datexpr2[1,1] [1] 1.143774 场景2 我现在有一个数据框date

  • R语言-因子与向量的转换方式

    一.因子的特点或性质 1.因子可视为C或JAVA语言中的枚举,适用于有限状态的表示. 2.因子不可以赋枚举集合外的值,如一个因子包含male,female,则不能再赋male和female以为的值,赋其他值会将该元素设置为空值. 二.因子的建立 1.因子的建立 假定有因子gendor,为一组人的性别: > gendor<-factor(c('m','f','f','m'),labels=c('male','female')) 则通过上式建立一个性别因子. > gendor [1] fem

  • R语言因子型数值转数值型的操作

    一直觉得只要是数字,不管是什么类型的,都可以通过as.numeric()函数转换为对应的numeric类型的数字,例如 x<-"123",x为character类型,而as.numeric(x)则为numeric类型的123. 但是因子(factor)类型却不一样. a<-factor(c(100,200,300,301,302,400,10)),它们的值分别为100 200 300 301 302 400 10,然而 as.numeric(a)对应的值并非100 200

  • R语言中的因子类型详解

    一.Factor函数 #函数factor可以把一个向量编码为一个因子,其一般形式为: #factor(x,levels=sort(unique(x),na.last=TRUE),labels,exculde=NA,order=FALSE) #其中x是向量,levels是水平,可以自行指定各离散的取值,不指定时由x的不同值来表示,labels可以用来指定各水平的标签 #不指定时用各离散取值的对应字符串 sex<-c("M","F","M",&

  • R语言中因子相关知识点详解

    因子是用于对数据进行分类并将其存储为级别的数据对象. 它们可以存储字符串和整数. 它们在具有有限数量的唯一值的列中很有用. 像"男性","女性"和True,False等.它们在统计建模的数据分析中很有用. 使用factor()函数通过将向量作为输入创建因子. 例 # Create a vector as input. data <- c("East","West","East","North

  • R语言数值取消科学计数法表示的操作

    我就废话不多说了,大家还是直接看代码吧~ >#取消科学计数法 >options(scipen = 200) >#scipen 表示在200个数字以内都不使用科学计数法 补充:R语言去除科学计数法 保留小数位 R语言 去除科学计数法 保留小数位 options("scipen"=100, "digits"=4) 补充:R语言科学计数法数据改变/丢失/失准,取消科学计数法的原因和解决方法 问题描述 如何在R中取消科学计数法 & 对R中使用科学技

  • R语言 如何保留大于或小于特定数值的行

    如下所示: newdata<-subset(x, x$var > 某一数字) x为矩阵 var是其中的一个变量 补充:r语言 循环次数超过了50这个最大值_错过了520还可以一起过儿童节,如何用R语言'撸'一个文字跑马灯去表白... 引言 和大家分享一下如何用R语言来写一个文字跑马灯吧.这个文字跑马灯写起来基本不费时间,在办公室摸一下鱼大概就够了. 正文 这个文字跑马灯我准备按照面向对象编程来写.因为,面向对象就会有对象.而且,这个东西写出来就是拿给你们去表白的. 首先我们定义一个基类,这个基

  • pandas.DataFrame删除/选取含有特定数值的行或列实例

    1.删除/选取某列含有特殊数值的行 import pandas as pd import numpy as np a=np.array([[1,2,3],[4,5,6],[7,8,9]]) df1=pd.DataFrame(a,index=['row0','row1','row2'],columns=list('ABC')) print(df1) df2=df1.copy() #删除/选取某列含有特定数值的行 #df1=df1[df1['A'].isin([1])] #df1[df1['A'].

  • R语言dplyr包之高效数据处理函数(filter、group_by、mutate、summarise)详解

    R语言dplyr包的数据整理.分析函数用法文章连载NO.01 在日常数据处理过程中难免会遇到些难处理的,选取更适合的函数分割.筛选.合并等实在是大快人心! 利用dplyr包中的函数更高效的数据清洗.数据分析,及为后续数据建模创造环境:本篇涉及到的函数为filter.filter_all().filter_if().filter_at().mutate.group_by.select.summarise. 1.数据筛选函数: #可使用filter()函数筛选/查找特定条件的行或者样本 #filte

  • 解决R语言 数据不平衡的问题

    R语言解决数据不平衡问题 一.项目环境 开发工具:RStudio R:3.5.2 相关包:dplyr.ROSE.DMwR 二.什么是数据不平衡?为什么要处理数据不平衡? 首先我们要知道的第一个问题就是"什么是数据不平衡",从字面意思上进行解释就是数据分布不均匀.在我们做有监督学习的时候,数据中有一个类的比例远大于其他类,或者有一个类的比值远小于其他类时,我们就可以认为这个数据存在数据不平衡问题. 那么这样的一个问题会对我们后续的分析工作带来怎样的影响呢?我举个简单的例子,或许大家就明白

  • R语言基础统计方法图文实例讲解

    tidyr > tdata <- data.frame(names=rownames(tdata),tdata)行名作为第一列 > gather(tdata,key="Key",value="Value",cyl:disp,mpg)创key列和value列,cyl和disp放在一列中 -号减去不需要转换的列 > spread(gdata,key="Key",value="Value") 根据value将

  • 详解R语言MCMC:Metropolis-Hastings采样用于回归的贝叶斯估计

    MCMC是从复杂概率模型中采样的通用技术. 蒙特卡洛 马尔可夫链 Metropolis-Hastings算法 问题 如果需要计算有复杂后验pdf p(θ| y)的随机变量θ的函数f(θ)的平均值或期望值. 您可能需要计算后验概率分布p(θ)的最大值. 解决期望值的一种方法是从p(θ)绘制N个随机样本,当N足够大时,我们可以通过以下公式逼近期望值或最大值 将相同的策略应用于通过从p(θ| y)采样并取样本集中的最大值来找到argmaxp(θ| y). 解决方法 1.1直接模拟 1.2逆CDF 1.

  • R语言运算符知识点总结

    运算符是一个符号,通知编译器执行特定的数学或逻辑操作. R语言具有丰富的内置运算符,并提供以下类型的运算符. 运算符的类型 R语言中拥有如下几种运算符类型: 算术运算符 关系运算符 逻辑运算符 赋值运算符 其他运算符 算术运算符 下表显示了R语言支持的算术运算符. 操作符对向量的每个元素起作用. 运算符 描述 例 + 两个向量相加 v <- c( 2,5.5,6) t <- c(8, 3, 4) print(v+t) 它产生以下结果 - 10.0 8.5 10.0 - 两个向量相减 v <

  • R语言利用loess如何去除某个变量对数据的影响详解

    R语言介绍 R语言是用于统计分析,图形表示和报告的编程语言和软件环境. R语言由Ross Ihaka和Robert Gentleman在新西兰奥克兰大学创建,目前由R语言开发核心团队开发. R语言的核心是解释计算机语言,其允许分支和循环以及使用函数的模块化编程. R语言允许与以C,C ++,.Net,Python或FORTRAN语言编写的过程集成以提高效率. R语言在GNU通用公共许可证下免费提供,并为各种操作系统(如Linux,Windows和Mac)提供预编译的二进制版本. R是一个在GNU

  • R语言入门教程之删除指定数据的方法

    引言 在R学习中经常用到的是按着某种逻辑值提取数据集.本文来讲一下利用索引的手法删除数据集合. 数据准备 > Data 英雄 职业 熟练等级 使用频次 胜率 1 后裔 射手 5 856 0.64 2 孙尚香 射手 5 211 0.10 3 狄仁杰 射手 5 324 0.20 4 李元芳 射手 4 75 0.30 5 安琪拉 法师 5 2324 0.40 6 张良 法师 4 755 0.50 7 不知火舞 法师 4 644 0.60 8 貂蝉 法师 3 982 0.70 9 <NA> &l

  • R语言基本对象类型知识点详解

    基本向量 包含单类型对象(例如整数,浮点数,复数,文本,逻辑值或者原始型数据)的向量 复合对象 包含一些列基本向量的数据结构,例如列表,配对列表,``S4对象或者环境. 这些对象的特性各不相同,但它们都包含一系列命名的对象 特殊对象 在R编程中服务于特定目的的对象,例如any,NULL和...等. 这类对象在特定的环境中具有十分重要的意义,但是无法创建一个属于该类型的对象 R语言 R代码,其被执行后可以返回其他对象 函数 R的引擎; 其以参数作为输入,同时返回一些对象作为输出 有时候,函数会修改

随机推荐