Attività con R - 1
[righe da eseguire, tra un "#" e l'altro]

1/3
print(1/3, 15); print(1/3, 16); print(1/3, 17); print(1/3, 18)
# come mai queste uscite?
x <- 5555.1251; y <- 5555; x-y
print(x-y, 16)
# come mai queste?
# Col cellulare 1/3*3 fa 0.9999999
13/124+4/80
library(MASS)
# che cos'è una "libreria"
fractions(13/124+4/80)
fractions(1255.255255255255255255)
fractions( 2.59807621135332/sqrt(3) )
# Deduco che 2.59807621135332 = 3√3/2
3+sqrt(-0.25)
# NAN: not a number
3+sqrt(-0.25+0i)
# i numeri complessi
#
as.roman(178); as.roman(179); as.roman(999)
# Only numbers between 1 and 3899 have a representation as roman numbers
#
factorial(21)
fractions(factorial(21))
fractions(factorial(22))
# come effettuare il "calcolo esatto"
#
# http://www.wolframalpha.com
# 2.59807621135332
# sqrt(3)/2
# 13/124+4/80
# 3+sqrt(-0.25)
# Is 5^(1/3) a rational number?
# Is pi^sqrt(2) a rational number?
# roman(999)
# 22!
#
c( choose(7,0), choose(7,1), choose(7,2), choose(7,3) )
choose(7,0:7)
# il ":"
#
2 < 5; 5 >= 2; 5 == 2; 5 = 2
!(1 > 2 & (3/2 < 2 | 1 == 0))
1 > 2 & (3/2 < 2 | 1 == 0)
1 > 2
3/2 < 2 | 1 == 0
3/2 < 2
1 == 0
# gli operatori "logici" e l'"=" nelle condizioni
#
k <-2; t <- 1
p <- function(x) (x^2+x+1)^2 + 1/(x^2+x+1) + x^2+x+1
q <- function(x) {t <- x^2+x+1; t^k + 1/t + t}
p(7); q(7)
t; k
# nella definizione di q ho usato la variabile t come variabile locale (il
# valore che assume non interferisce col valore che t ha assunto prima della
# definizione, in cui era globale, come globale è la varabile k); x è invece
# un parametro formale (è usato per definire q; anch'esso non interferisce
# coi valori assunti da eventuali usi di x al di fuori della definizione di q)
#
f <- function(x) ifelse( x>= 2, -4, 6)
plot(f,-5,5); abline(h=0,v=0,col="red")
#
plot(f,-5,5,type="p"); abline(h=0,v=0,col="red")
#
plot(f,-5,5,type="p",pch="."); abline(h=0,v=0,col="red")
#
plot(f,-5,5,type="p",pch=".",n=1e4); abline(h=0,v=0,col="red")
#
# http://www.wolframalpha.com
# y = Piecewise[ { {-4, x >= -2}, {6, x < -2} } ]
# Per avere il grafico in un particolare intervallo:
# plot Piecewise[ { {-4, x >= -2}, {6, x < -2} } ], -8 <= x <= 8
# ovvero:
# plot Piecewise[ { {-4, x >= -2}, {6, x < -2} } ], -8 <= x <= 8, -7 <= y <= 9
#
readLines("http://macosa.dima.unige.it/om/prg/stf/altomas.txt",n=3)
# vedo che cos'è un file, stampandone poche righe,
read.table("http://macosa.dima.unige.it/om/prg/stf/altomas.txt",sep=",",skip=1, nrows=2)
# poi, se vedo che è una tabella, ne carico le righe indicando il separatore
hm <- read.table("http://macosa.dima.unige.it/om/prg/stf/altomas.txt",sep=",",skip=1)
str(hm)
#
edit(hm)
#
hm
write.csv(hm,"hm.csv")
# come scrivere una tabella in formato foglio di calcolo
# (cercare il file sul computer: potrebbe essere nella cartella
#  Documenti, sul DeskTop, ...)
#
plot(hm)
hf <- read.table("http://macosa.dima.unige.it/om/prg/stf/altofem.txt",sep=",",skip=1)
dev.new() # apro una nuova finestra (device = dispositivo)
plot(hf)
#
plot(hf,ylim=c(160,250),col="red")
abline(v=axTicks(1), h=axTicks(2), col="orange",lty=3)
points(hm,col="blue")
lines(hm,col="blue"); lines(hf,col="red")
#
indm <- hm$V2/hm$V2[1]*100; indf <- hf$V2/hf$V2[1]*100
# estraggo righe/colonne da una tabella
plot(hf$V1,indf,col="red")
abline(v=axTicks(1), h=axTicks(2), col="orange",lty=3)
points(hm$V1,indm,col="blue")
lines(hm$V1,indm,col="blue")
lines(hf$V1,indf,col="red")
#
ls()
rm(hm,t)
ls()
rm(list=ls())
ls()
# come vedere le variabili definite, come cancellarne alcune o tutte
#
x <- c(10.4, 5.6, 3.1, 6.4, 21.7); x
length(x); min(x); max(x); range(x); sort(x); mean(x); median(x); sum(x); prod(x)
#
seq(3,10,len=4); seq(6,10,0.5)
length(seq(6,10,0.5))
# un modo per costruire sequenze
#
dati <- c(315.5, 732.3, 586.7); barplot(dati)
# un istogramma a barre
# come aggiungervi delle etichette:
dev.new()
names(dati) <- c("nord","centro","sud"); barplot(dati)
dev.new()
barplot(dati/sum(dati)*100)
abline(h=axTicks(2), col="blue",lty=3)
dev.new()
barplot(dati/sum(dati)*100,horiz=TRUE)
abline(v=axTicks(1), col="blue",lty=3)
dev.new()
# come orientare le "etichette" sugli assi
barplot(dati/sum(dati)*100,horiz=TRUE,las=1)
abline(h=axTicks(2), col="blue",lty=3)
#
# Come cercare queste cose nell'indice per voci
# Esempi d'uso di WolframAlpha: apri "software" qui
# (poi apri "clicca").
# Per come vengono approssimati i numeri, vedi qui.
# Domande, problemi, ... ?
#
# (vedremo una prossima volta come salvare/caricare sessioni di lavoro)
#