顯示具有 R 標籤的文章。 顯示所有文章
顯示具有 R 標籤的文章。 顯示所有文章

2020年4月24日 星期五

"程式教學"R語言混合使用迴圈與流程控制

接下來要談談,寫程式中非常重要的環節,混合應用迴圈與流程控制,其實任何我們看到的應用程式,基本上都是用無數的迴圈跟條件判斷(流程控制)堆疊出來的,也就是說只要熟悉以上的使用方式,基本上就能夠寫出簡易的小程式了。

先來複習一下條件判斷(流程控制)
R語言裡面主要是使用if、else if、與else來做判斷
如果只有一個條件
那就是if跟else組成
我們先來看程式碼

if條件一成立
執行程式一
如果條件一沒有成立的話
則執行程式二



舉實例來說
指定a為2
b為3
然後做兩者的大小判斷



不過可以發現,以上這個條件沒有考慮到如果兩者相等怎麼辦

所以如果有兩個條件以上的話
就會使用if、else if、與else

以上面那個例子來說
就是這樣寫

接著我們來複習一下迴圈for跟while

迴圈
for :通常用於已知要迭代幾次的情況使用

for (條件){
    要持續執行的程式
}
以下我們用內建的month.name來操作
month.name裡面有所有月份的英文
程式如下
for(month in month.name ){
  print(month)

}
如此一來就可以把每個月份都打印出來了

while:通常不知道要迭代幾次,執行到條件終止為止
程式如下
while(條件){
       執行程式
}
一樣用剛剛的month.name來操作
在最後一行讓i持續加1後
因迴圈會反覆執行,當i變成13的時候
條件不成立,所以程式終止執行


接下來就是混合使用了

這裡還要介紹兩個東西
break與next

break是在迴圈執行過程中,離開當前的迴圈

next則是滿足某條件時,略過該次執行的程式

我們先來講break

一樣是用內建的month.name

可以看到,在程式執行到April的時候,就會離開迴圈
所以只會輸出April以前的月份


接下來使用next

則可以發現April被跳過了沒有輸出

以上就是迴圈混合條件判斷與next及break的一些用法

本教學內容參考自“輕鬆學習R語言”與iT邦幫忙網站
https://ithelp.ithome.com.tw/



2019年5月27日 星期一

"程式教學"R語言的流程控制(for, while, ifelse)

流程控制 代表在程式執行時,指令、子程式或求值的順序
前面我們講過邏輯判斷,沒看過的記得先去看看
https://hn28082251.blogspot.com/2019/05/r-variable-type-logical.html
接下來要講條件判斷與迴圈

迴圈
for :通常用於已知要迭代幾次的情況使用

for (條件){
    要持續執行的程式
}
以下我們用內建的month.name來操作
month.name裡面有所有月份的英文
程式如下
for(month in month.name ){
  print(month)

}
如此一來就可以把每個月份都打印出來了

while:通常不知道要迭代幾次,執行到條件終止為止
程式如下
while(條件){
       執行程式
}
一樣用剛剛的month.name來操作
在最後一行讓i持續加1後
因迴圈會反覆執行,當i變成13的時候
條件不成立,所以程式終止執行





條件判斷if else

if('條件'){
 '做A'
 }else{
 '做B' 
}

來看看下面這個例子
如果條件成立就執行上面那行
如果條件不成立就執行else那行

也可以用比較簡化的寫法一行達成
if(條件)  '做A' else '做B'

還有ifelse的寫法
ifelse('條件', '條件若成立:做A', '條件若不成立:做B')

還有if 、else if 、else多重條件判斷

if(條件一){
做A
}else if(條件二){
做B
}else{
做C
}
比如說我們來寫個依據氣溫來判斷要去哪裡運動

如果我們把氣溫改成42的話呢

這樣大家有理解流程控制的用法了嗎?

下一篇來簡單介紹一下混合使用迴圈與流程控制
還有break 與next的用法



本教學內容參考自“輕鬆學習R語言”與iT邦幫忙網站

https://ithelp.ithome.com.tw/


2019年5月26日 星期日

"程式教學"R語言的變數類型,文字(character),日期(Date),時間(POSIXct、POSIXt)

前面講了R語言的變數類型(type),還有一些邏輯判斷
沒有讀過的記得先去看看
https://hn28082251.blogspot.com/2019/05/r-variable-type-logical.html


接下來要講講文字,日期,時間這三種類型

文字(character)
在R語言中我可以使用單引號(')或者雙引號(")來建立文字(character),我在比較習慣用雙引號,以下來做個範例
把我的名字放進my_name這個變數
my_name <- "salam"



日期(Date)
在R語言中,日期(Date)看起來跟文字很像,但我們把它放進class()之中檢驗,就可以發現它的不同了。
以下示範用sys.Date(),這個函數是可以取得電腦系統的日期。



日期可以被轉換成整數,原因是系統日期轉換的依據,是以1970年1月1日當作0,在這一天以後的每一天就+1,前一天則-1,有很多系統都是以這樣來做為依據。
所以日期其實可以進行四則運算。


時間(POSIXct、POSIXt)
在R語言中,和日期類似,感覺起來和文字也沒有甚麼差別,但一樣放進class()之中檢驗,就可以發現它的不同了。
以下示範用Sys.time(),這個函數是可以取得電腦系統的時間



與日期類似可以被轉換成整數,原因是系統時間轉換的依據,是以1970年1月1日格林威治標準時間0時0分0秒當作0,在這一瞬間的以後每一秒就+1,前一秒則-1,有很多系統都是以這樣來做為依據。

ps.如果跟我一樣在台灣的話,系統的時區是中原標準時間,則基準時間會是1970年1月1日08時0分0秒。

講到這裡變數大部分都介紹完了,接下來要講講變數的判斷與轉換。



本教學內容參考自“輕鬆學習R語言”與iT邦幫忙網站
https://ithelp.ithome.com.tw/

2019年5月25日 星期六

"程式教學"R語言的變數類型(variable type)邏輯值(logical)與判斷條件

前一篇文章我們講了一些變數的類型,如果沒有看過的記得先去看。
https://hn28082251.blogspot.com/2019/05/r-variable-type.html


接下來要講講邏輯值(logical),當我們要進行判斷條件的時候就會使用到邏輯值,邏輯值只有兩個TRUE跟FALSE,也可以用T跟F代替,我們一樣用左下角命令列(Console)逐一輸入這些程式,來詢問括弧中的變數為何






要記得,R語言是對大小寫很敏感的,所以如果你把FALSE寫成False就不會被識別成邏輯值。



接下來我們講講判斷條件
來看看常見的判斷運算子,大致上跟其他語言很像
==      等於
>        大於
<        小於
>=      大於等於
<=      小於等於
!=       不等於
%in% 包含



除了直接輸入邏輯值,也可以用判斷條件來得到邏輯值。

%in%  這個之後會再來講
關於邏輯值(logical)與判斷條件大致上就是這樣,接下來會講講其他變數類型,文字,日期,時間。




本教學內容參考自“輕鬆學習R語言”與iT邦幫忙網站
https://ithelp.ithome.com.tw/

2019年5月24日 星期五

"程式教學"R語言的變數類型(variable type)

前幾篇的基礎完成了開發環境安裝之後

我們來講講R語言的變數類型(type)

字元(character): 文字字串,用雙引號包起來。 
數值(numeric): 雙倍精準度數值,簡單的形容就是double。 
整數(integer): 沒有小數位的數值,以數字結尾加上L。 
邏輯(logical): TRUE /FALSE,也可以縮寫成T/F。
日期(Date)
時間(POSIXct、POSIXt)




還有變數如何指派,有三種方式
=   (其他語言大部分用這個,但R語言比較少用)
 <- (最佳 ,最通用的方法)
-> (也有右向箭頭,但不建議)


設定變數名稱有幾個要注意的地方
變數名稱不能使用數字開頭
變數名稱不能使用保留字,可以查詢下面連結找到保留字清單
https://stat.ethz.ch/R-manual/R-devel/library/base/html/Reserved.html
變數名稱避免使用函數/函式名稱

在RStudio中,我們可以按alt與-幫我們生成<-符號

以下我們來舉例,我們在左下角命令列(Console)逐一輸入這些程式,來詢問括弧中的變數為何,class()這個函數可以幫助我們知道變數的類型。
接下來我們來展示如何把值指派給變數


在這裡我們把2這個值賦予給my_num這個變數空間,其實除了<-之外,用=也是可以的,只是在R語言中這樣用的人比較少,所以我還是推薦使用<-。

整數這個型別比較特別
當我們輸入一個整數並加上L,R語言就會儲存為整數(integer),如果我們在整數後面加上小數點及數字,R語言就會回傳警告且忽略L儲存為數值。

以上是R語言一些變數的介紹,接下來會講講邏輯值(logical)的運用。


本教學內容參考自“輕鬆學習R語言”與iT邦幫忙網站
https://ithelp.ithome.com.tw/


2019年5月23日 星期四

"程式教學"R語言RStudio簡單入門介面介紹

Rstudio是編輯、運行R語言的最為理想的工具之一,支持純R腳本、Rmarkdown (腳本文檔混排)、Bookdown (腳本文檔混排成書)、Shiny (交互式網絡應用)等。

本篇將來簡單介紹一下RStudio的操作介面 前面已經講過如何安裝Rstudio
還沒裝的記得先去看前面那篇

https://hn28082251.blogspot.com/2019/05/r-rstudio-install.html

介面如下

開啟新的檔案後如下Ctrl+Shift+N

左上的方格區是編寫程式碼的地方

左下是程式運行的狀態
右上是讀入的變數或者歷史紀錄框
右下是系統目錄相關資訊


以上差不多就是RStudio大概的配置,接下來的教學會簡單講講R的運用。








"程式教學"R語言如何安裝RStudio環境

前面已經講過如何安裝R了
還沒裝的記得先去看前面那篇
https://hn28082251.blogspot.com/2019/05/r-install-setup.html



接著我們要安裝的是RStudio
RStudio是為R語言設計的一種跨平台整合開發環境。其特色包括可客製化的軟體套件視覺化介面與同團隊開發的一系列數據可視化與出版工具。
先到http://www.rstudio.com/並下載安裝。






點選windows的版本,如果是其他作業系統就點選該系統的版本



點選後就會下載了,下載完成會看到安裝檔


開啟後進入安裝畫面,點選下一步


選擇安裝位置後按下一步


選擇開始功能表資料夾

安裝進行中

安裝完成

去開始功能表開啟Rstudio




看到這裡代表我們安裝完成了。

接下來會簡單介紹Rstudio的介面與簡單操作。






2019年5月21日 星期二

"程式教學"R語言 安裝與設定

除了python外,資料科學另一個很夯的就是R了

目前 R 官方網站上所提供的 R 安裝檔適用於各種版本的 Windows(Windows XP 以後),所以不管您是使用哪一版的 Windows,安裝的方式都是一樣的,以下是簡單寫寫Windows 系統上的 R 安裝步驟。


開啟 R 官方網站的網頁,點選左邊的「CRAN」
https://www.r-project.org/



從列表中選擇台灣的鏡像站

依照作業系統下載安裝檔,本次示範的為在Windows 系統中就點選「Download R for Windows」。


可以看到有三種安裝檔,第一次安裝 R 的時候請選擇「base」。
點選最新的下載連結,下載 R 安裝檔。
安裝檔下載完成後,執行安裝程式進行安裝,首先選擇語言。


開啟後,請點選「下一步」。



選擇安裝目的資料夾,設定好之後,點選「下一步」。





選擇要安裝的元件(基本上全選),設定完後,點選「下一步」。


選擇是否要自訂啟動選項,我建議選擇預設,點選「下一步」。


接下來會選擇開始功能表的資料夾,使用預設,點選「下一步」。


選擇附加的工作,建議在桌面建個捷徑比較方便,點選「下一步」。


就開始安裝了




安裝完成後在桌面會出現捷徑
預設會有兩個捷徑,R i386 的那個是 32 位元版本的,而 R x64 的那一個則是 64 位元版本的,一般的情況下使用哪一個都可以,如果是要處理比較大量的資料時,建議使用 64 位元版本的 R。

從桌面上點擊 R 的捷徑,打開之後就可以開始使用了。


以上是安裝教學,接下來會寫一些簡單的應用。







我將思想傳授他人,他人之所得,亦無損於我之所有;猶如一人以我的燭火點燭,光亮與他同在,我卻不因此身處黑暗。湯瑪斯‧傑弗遜(Thomas Jefferson)




<GOOGLE地圖時間軸資料匯入世界迷霧JSON_to_gpx>

可能有些人有用世界迷霧這個APP 來記錄自己到過世界那些地方 之前比較常用的 大概是把飛機的搭乘軌跡匯入 那有沒有可能把GOOGLE地圖過往的時間軸也匯入呢? 我研究了一下是可行的 不過GOOGLE地圖時間軸的資料匯出會是json檔 世界迷霧只能用kml跟gpx匯入 所以會需要一...