English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

R 基礎語法

La maggior parte delle persone inizia a imparare un nuovo linguaggio di programmazione con il programma di output "Hello, World!". Ecco il codice del programma "Hello, World!" del linguaggio R:

myString <- "Hello, World!"
print ( myString )

L'esempio di seguito assegna la stringa "Hello, World!" alla variabile myString e poi utilizza la funzione print() per visualizzarla.

注意:Il linguaggio R utilizza l'arrow left <- per l'assegnazione, ma alcune versioni più recenti supportano anche l'uguale = =.

Variabile

I nomi validi delle variabili del linguaggio R sono composti da lettere, numeri e punti . o trattini bassi _.

Il nome della variabile inizia con una lettera o un punto.

Nome variabileÈ corretto?Ragione
var_name2.CorrettoIl nome della variabile inizia con un carattere e è composto da lettere, numeri, trattini bassi _ e punti .
var_name%ErroreIl simbolo % è un carattere illegale
2var_nameErroreNon può iniziare con un numero

.var_name,

var.name

CorrettoPuoi iniziare con un punto ., ma attenzione: il punto . non può essere seguito da un numero
.2var_nameErroreIl punto . non può essere seguito da un numero
_var_nameErroreNon può iniziare con una linea sottile _

Assegnazione di variabili

La versione più recente del linguaggio R utilizza l'arrow left <-, l'uguale = e l'arrow right -> per assegnare:

# Utilizza il simbolo di uguaglianza = per assegnare
> var.1 = c(0,1,2,3)           
> print(var.1)
[1] 0 1 2 3
# Utilizza il simbolo di freccia sinistra <- per assegnare
> var.2 <- c("learn","R")   
> print(var.2)
[1] "learn" "R"
    
# Utilizza il simbolo di freccia destra <- per assegnare
> c(TRUE,1) -> var.3
> print(var.3)
[1] 1 1

Puoi visualizzare le variabili definite utilizzando ls() Funzione:

> print(ls())
[1] "var.1" "var.2" "var.3"

Puoi eliminare una variabile utilizzando rm() Funzione:

> rm(var.3)
> print(ls())
[1] "var.1" "var.2"
>

Nella sezione precedente abbiamo imparato come installare l'ambiente di programmazione di R, in questo capitolo vi introdurremo la programmazione interattiva e la programmazione di script del linguaggio R.

Programmazione interattiva

Possiamo eseguire il comando R nella riga di comando per entrare nella finestra di programmazione interattiva:

R

Esecutato questo comando, verrà richiamato l'interprete del linguaggio R, possiamo inserire il codice dopo il simbolo >.

I comandi interattivi possono essere usati per uscire digitando q():

> q()
Salva immagine dello spazio di lavoro? [s/n/c]: y

File script

L'estensione dei file di R è .R.

Prossimamente creiamo un file w3codebox-test.R: il codice è il seguente:

w3codebox-test.R file

myString <- "w3codebox"
print ( myString )

Prossimamente eseguiamo il script utilizzando Rscript nella finestra del prompt dei comandi:

Rscript w3codebox-test.R

I risultati dell'output sono i seguenti:

[1] "w3codebox"

Input/output

Output di print()

print() è la funzione di output del linguaggio R.

Come altre lingue di programmazione, R supporta l'output di numeri, caratteri e altro.

La frase di output è molto semplice:

print("w3codebox")
print(123)
print(3e2)

執行結果:

[1] "w3codebox"
[1] 123
[1] 300

Come node.js e Python, il linguaggio R è un linguaggio interpretato, quindi spesso possiamo utilizzare il linguaggio R come se fosse una riga di comando.

Se inseriamo un valore in una riga, R lo standardizzerà direttamente e lo esporterà:

> 5e-2
[1] 0.05

La funzione cat()

Se è necessario concatenare i risultati dell'output, possiamo utilizzare la funzione cat():

> cat(1, "+", 1, "=", 2, '\n')
1 + 1 = 2

La funzione cat() aggiunge automaticamente uno spazio tra ogni due elementi concatenati.

Output dei contenuti in file

I metodi di output dei file in R sono molto vari e molto facili da usare.

La funzione cat() supporta l'output diretto dei risultati in un file:

cat("w3codebox", file="/Users/w3codebox/w3codebox-test/r_test.txt")

Questa istruzione non produrrà alcun risultato sulla console, ma esporterà "w3codebox" nel file "/Users/w3codebox/w3codebox-test/r_test.txt".

Il parametro file può essere un percorso assoluto o relativo, si consiglia di utilizzare il percorso assoluto, il formato del percorso Windows è D:\\r_test.txt.

cat("w3codebox", file="D:\\r_test.txt")

Attenzione: questa operazione è "sovrascrittura in scrittura", utilizzala con cautela poiché cancellerà i dati originali del file di output. Se desideri "aggiungere in scrittura", non dimenticare di impostare il parametro append:

cat("GOOGLE", file="/Users/w3codebox/w3codebox-test/r_test.txt", append=TRUE)

Apri il file r_test.txt dopo aver eseguito il codice sopra, il contenuto del file è come segue:

w3codeboxGOOGLE

sink()

La funzione sink può scrivere direttamente il testo dell'output del terminale nel file:

sink("/Users/w3codebox/w3codebox-test/r_test.txt")

Dopo l'esecuzione di questa istruzione, qualsiasi output del terminale verrà scritto nel file "/Users/w3codebox/w3codebox-test/r_test.txt", il terminale non mostrerà l'output.

Attenzione: questa operazione è anche un'operazione di "sovrascrittura", che cancellerà direttamente il contenuto del file esistente.

Se si desidera mantenere l'output del terminale, è possibile impostare l'attributo split:

sink("/Users/w3codebox/w3codebox-test/r_test.txt", split=TRUE)

Se si desidera annullare l'output nel file, è possibile chiamare sink senza parametri:

sink()
sink("r_test.txt", split=TRUE) # L'output sul terminale è anche eseguito
for (i in 1:5) 
    print(i)
sink() # Annulla l'output nel file
sink("r_test.txt", append=TRUE) # Non eseguire l'output sul terminale, scrivere in appendita nel file
print("w3codebox")

Eseguendo il codice sopra, verrà creato un file r_test.txt nella directory corrente, aprendo il contenuto del file come segue:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5
[1] "w3codebox"

L'output del terminale è:

[1] 1
[1] 2
[1] 3
[1] 4
[1] 5

Inserimento di testo

Possiamo associare C linguaggio scanf, Java java.util.Scanner, se hai studiato Python potresti essere più familiare con la funzione input(). Tuttavia, il linguaggio R, essendo un linguaggio interpretativo, è più simile a alcuni linguaggi di script terminali (come bash o PowerShell), che si basano su un sistema di comandi e necessitano di input e output e non sono adatti per lo sviluppo di applicazioni orientate agli utenti (poiché sono progettati per l'uso degli utenti finali). Pertanto, il linguaggio R non ha una funzione specifica per leggere dal terminale, l'inserimento di testo è sempre stato in corso nell'uso di R.

從文件讀入文字

R 語言中有豐富的文件讀取函數,但是如果純粹的想將某個文件中的內容讀取為字符串,可以使用 readLines 函數:

readLines("/Users/w3codebox/w3codebox-test/r_test.txt")

執行結果:

[1] "w3codeboxGOOGLE"

讀取結果是兩個字符串,分別是所讀取的文件包含的兩行內容。

注意:所讀取的文本文件每一行(包括最後一行)的結束必須有換行符,否則會報錯。

其他方式

除了文字的簡單輸入輸出以外,R還提供了很多輸入數據和輸出數據的方法,R語言最方便的地方就是可以將數據結構直接保存到文件中去,而且支持保存為CSV、Excel表格等形式,並且支持直接地讀取。這對於數學研究者來說無疑是非常方便的。但是這些功能對於R語言的學習影響不大,我們將在之後的章節提到。

工作目錄

對於文件操作,我們需要設置文件的路径,R 語言可以通過以下兩個行數來获取和設置當前的工作目錄:

  • getwd() : 获取當前工作目錄

  • setwd() : 設置當前工作目錄

# 當前工作目錄
print(getwd())
# 設置當前工作目錄
setwd("/Users/w3codebox/w3codebox-test2")
# 查看當前工作目錄
print(getwd())

執行以上代碼輸出結果為:

[1] "/Users/w3codebox/w3codebox-test"
[1] "/Users/tianqixin/w3codebox-test2"