R語(yǔ)言 如何保留大于或小于特定數(shù)值的行
如下所示:
newdata<-subset(x, x$var > 某一數(shù)字)
x為矩陣 var是其中的一個(gè)變量
補(bǔ)充:r語(yǔ)言 循環(huán)次數(shù)超過(guò)了50這個(gè)最大值_錯(cuò)過(guò)了520還可以一起過(guò)兒童節(jié),如何用R語(yǔ)言‘?dāng)]'一個(gè)文字跑馬燈去表白...
引言
和大家分享一下如何用R語(yǔ)言來(lái)寫(xiě)一個(gè)文字跑馬燈吧。這個(gè)文字跑馬燈寫(xiě)起來(lái)基本不費(fèi)時(shí)間,在辦公室摸一下魚(yú)大概就夠了。
正文
這個(gè)文字跑馬燈我準(zhǔn)備按照面向?qū)ο缶幊虂?lái)寫(xiě)。因?yàn)?,面向?qū)ο缶蜁?huì)有對(duì)象。而且,這個(gè)東西寫(xiě)出來(lái)就是拿給你們?nèi)ケ戆椎摹?/p>
首先我們定義一個(gè)基類(lèi),這個(gè)基類(lèi)要具有像PPT一樣的逐頁(yè)播放文字的功能。
#' @title projector projector <- R6::R6Class( classname = "projector", public = list( initialize = function(sildes) { # 構(gòu)造函數(shù) private$slides <- sprintf("r%s",sildes) # 給每頁(yè)文字的開(kāi)始加上'r'字符以覆蓋上一頁(yè) private$length <- base::length(private$slides) # 記錄所有的播放頁(yè)數(shù)量 private$position <- 0 # 初始播放位置為第一頁(yè)之前 private$slide <- private$slides[private$position] }, nextslide = function(){ # 播放下一頁(yè) private$position <- private$position + 1 # 獲取下一頁(yè)位置 if ( private$position > private$length ){ # 播放到最后一頁(yè)后回到第一頁(yè) private$position <- private$position - private$length } private$slide <- private$slides[ private$position ] # 設(shè)置當(dāng)前播放頁(yè)為下一頁(yè) base::cat(private$slide) # 播放當(dāng)前播發(fā)頁(yè) }, autoplay = function(fps = 10){ # 自動(dòng)播放,播放速率每秒10頁(yè) while(T){ # 無(wú)限循環(huán),可以用for改寫(xiě)控制循環(huán)次數(shù) self$nextslide() # 播放下一頁(yè) base::Sys.sleep(1/fps) # 休眠控制播放速率 } } ), private = list( slide = NA,# 當(dāng)前播放頁(yè) slides = c(), # 所有的播放頁(yè) length = 0,# 播放頁(yè)的總數(shù) position = 0# 當(dāng)前播放位置 ) ) #' @test player <- projector$new(c("我是第一頁(yè)","我是第二頁(yè)","我是第三頁(yè)")) player$nextslide() # 播放下一頁(yè) player$nextslide() player$nextslide() player$nextslide() player$autoplay(3) # 以每秒三張的速率播放,可以使用 Ctrl+C 組合鍵 跳出
利用這個(gè)文字PPT播放器,我們只要設(shè)置好播放頁(yè)就可以實(shí)現(xiàn)文字跑馬燈了。比如:
player2 <- projector$new( c( "我是第一頁(yè) ", "是第一頁(yè) 我", "第一頁(yè) 我是", "一頁(yè) 我是第", "頁(yè) 我是第一", " 我是第一頁(yè)", " 我是第一頁(yè) ", " 我是第一頁(yè) ", " 我是第一頁(yè) ", "我是第一頁(yè) " # 最后一頁(yè)的下一頁(yè)是第一頁(yè),讓播放頁(yè)閉環(huán)以到達(dá)流暢的視覺(jué)效果 ) ) player2$autoplay(3)
當(dāng)然我們不需要那么傻的的每次都手動(dòng)設(shè)置播放頁(yè)。接下來(lái),我們從PPT文字播放器這個(gè)基類(lèi)派生一個(gè)類(lèi),這個(gè)派生類(lèi)新增了根據(jù)跑馬燈文字自動(dòng)設(shè)置播放頁(yè)的功能。
#' @title scroller scroller <- R6::R6Class("scroller", inherit = projector, public = list( initialize = function(film, width = 50 ) { # 重載基類(lèi)的構(gòu)造函數(shù),根據(jù)輸入的文字和寬度自動(dòng)設(shè)置播放頁(yè) 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("你可真是個(gè)小可愛(ài)! 不如... 和我在一起吧^_^",50) # 設(shè)置播放頁(yè)的寬度為50 boy$autoplay(10) # 以每秒10頁(yè)的速率播放 girl <- scroller$new("哈哈哈*—* 我就知道你喜歡我! 好吧,我就勉強(qiáng)答應(yīng)你咯~",50) # 設(shè)置播放頁(yè)的寬度為50 girl$autoplay(10) # 以每秒10頁(yè)的速率播放
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
R語(yǔ)言中g(shù)gplot2繪制雙坐標(biāo)軸圖
本文主要介紹了R語(yǔ)言中g(shù)gplot2繪制雙坐標(biāo)軸圖,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08R語(yǔ)言-實(shí)現(xiàn)list的嵌套與提取嵌套中的值
這篇文章主要介紹了R語(yǔ)言-實(shí)現(xiàn)list的嵌套與提取嵌套中的值,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04R語(yǔ)言編程學(xué)習(xí)繪制動(dòng)態(tài)圖實(shí)現(xiàn)示例
這篇文章主要介紹了R語(yǔ)言編程學(xué)習(xí)繪制動(dòng)態(tài)圖實(shí)現(xiàn)示例,有需要的的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2021-10-10R語(yǔ)言編程學(xué)習(xí)從Github上安裝包解決網(wǎng)絡(luò)問(wèn)題
這篇文章主要為大家介紹了R語(yǔ)言編程從Github上安裝包的過(guò)程詳解,這樣可以解決很多網(wǎng)絡(luò)問(wèn)題,有需要的朋友可以借鑒參考下,希望能夠有所幫助2021-11-11R語(yǔ)言中corrplot標(biāo)題居中及eps格式輸出
由于論文的需要,很多R語(yǔ)言繪圖需要eps格式矢量圖的方式進(jìn)行輸出,同時(shí)最近也需要繪制相關(guān)性圖,因此決定寫(xiě)個(gè)博客作為記錄,有需要的朋友可以借鑒參考下2021-11-11R語(yǔ)言多線程運(yùn)算操作(解決R循環(huán)慢的問(wèn)題)
這篇文章主要介紹了R語(yǔ)言多線程運(yùn)算操作(解決R循環(huán)慢的問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-04-04