# # Zadanie 1.1 # wektor = (1:100)^2 summary(factor(wektor %% 10)) # # Zadanie 1.2 # # radiany na stopnie rad2dec <- function(x) x*pi/180 #liczymy x = rad2dec(c(0,30,45,60,90)) data.frame(sin = sin(x), cos = cos(x), tan = tan(x), atan = 1/tan(x)) # # Zadanie 1.3 # paste(1:30,c("A", "B", "C"), sep=".") paste(1:30,".",c("A", "B", "C"), sep="") # # Zadanie 1.4 # daneO = read.table("http://www.biecek.pl/R/dane/daneO.csv", sep=";", h=T) for (i in 1:ncol(daneO)) print(paste(colnames(daneO)[i], "klasa:", class(daneO[,i]), "typ:", typeof(daneO[,i]))) # # Zadanie 1.5 # parzyste = 1:(nrow(daneO)/2)*2 parzyste = seq(2,nrow(daneO),2) parzyste = (1:nrow(daneO)%%2) ==0 daneO[parzyste,] # # Zadanie 1.6 # indeksy = (daneO$Wiek>50) & (daneO$Wezly.chlonne ==1) daneO[indeksy,] # # Zadanie 1.7 # (kolumny = colnames(daneO)) nchar(kolumny) # # Zadanie 1.8 # skrajne <- function(x) { dlugosc = length(x) if (dlugosc<3) { print("za krtki argument") return() } sort(x)[c(1:3,(dlugosc-2):dlugosc)] } # # Zadanie 1.9 # skrajne <- function(x, ile=3) { dlugosc = length(x) if (dlugosc55")) table(wiekPoziomy) table(daneBT[,2], wiekPoziomy) addmargins(table(daneBT[,2], wiekPoziomy)) ftable(daneBT[,2], daneBT[,3], wiekPoziomy) # # Zadanie 2.2 # linie = unlist(read.table("http://www.biecek.pl/R/dane/imieniny.txt", sep="\n", stringsAsFactors=F)) length(linie) # # Zadanie 2.3 # imiona = sapply(strsplit(linie, " "), function(x) x[[1]]) dlugosciImion = nchar(imiona) table(dlugosciImion) imiona[dlugosciImion == min(dlugosciImion)] imiona[dlugosciImion == max(dlugosciImion)] zenskieImiona = imiona[grep("a$",imiona)] length(zenskieImiona) pierwszaLitera = substr(imiona, 0,1) summary(factor(pierwszaLitera)) imiona[grep("anna$",imiona)] imionaBezPolskich = chartr("󟿥ʌƣӏ","aesclnozzAESCLNOZZ", imiona) sum(imionaBezPolskich != imiona) # # Zadanie 2.4 # urodzeni30X = imiona[c(grep(" 30.X$", linie), grep(" 30.X ", linie))] sort(urodzeni30X) liczbyImienin = sapply(strsplit(linie, " "), function(x) length(x)-1) linie[liczbyImienin==max(liczbyImienin)] datyImienin = sapply(strsplit(linie, " "), function(x) x[-1]) liczebnosci = table(unlist(datyImienin)) names(liczebnosci[liczebnosci == max(liczebnosci)]) dniImienin = unlist(sapply(strsplit(linie, "[ .]"), function(x) x[seq(2,length(x),2)])) miesiaceImienin = unlist(sapply(strsplit(linie, "[ .]"), function(x) x[seq(3,length(x),2)])) table(dniImienin) table(miesiaceImienin) plot(table(dniImienin)) plot(table(miesiaceImienin)) plot(table(tolower(unlist(sapply(strsplit(linie, "[ ]"), function(x) strsplit(x[1],"")))))) # # Zadanie 2.5 # with(daneBT,by(Wiek,WIT,summary)) # # Zadanie 2.6 # mat = matrix(c(1, 5, 3, 2, 0, 5, 1, 2, 1),3,3) det(mat) eigen(mat) # # Zadanie 2.7 # outer(1:5,1:5,function(x,y) paste(x,"*",y,"=",x*y,sep="")) # # Zadanie 2.8 # pdf("c:\\hist.pdf", 5, 5) hist(daneBT) dev.off() # # Zadanie 2.9 # polaczenie = url("http://www.gpw.pl", open="r") zawartoscUrla = readLines(polaczenie) close(polaczenie) nazwy = zawartoscUrla[grep("", zawartoscUrla)] wartosci = zawartoscUrla[grep("", zawartoscUrla)] nazwy2 = sapply(strsplit(nazwy, "[<>]"), function(x) x[3]) wartosci2 = sapply(strsplit(wartosci, "[<>]"), function(x) x[3]) data.frame(nazwy = nazwy2[2:5],wartosci = wartosci2) # # Zadanie 2.10 # # przypieszylimy ponad 200 razy Rprof("profiler.out", interval = 0.01, memory.profiling=TRUE) N = 10000 ind1 = 1:20 ind2 = 21:40 wyniki = numeric(N) macierz = .Internal(matrix(rnorm(N*40,N,40),N,40, T)) for (i in 1:N) { wyniki[i] = .Internal(cor(macierz[i, ind1], macierz[i, ind2], 1, F)) } Rprof(NULL) summaryRprof("profiler.out",memory="both") # # Zadanie 2.11 # test <- function(x) { wynik = try(x, silent = T) if (class(wynik)=="try-error") cat("KLAPA\n") else cat("SUKCES\n") } test(cor(1)) # # Zadanie 2.12 # library(polynom) wiel1 = polynomial(c(3, -1, -3, 1)) wiel2 = polynomial(c(12, -1, -12, 1)) solve(wiel1) GCD(wiel1, wiel2) # # Zadanie 2.13 # by(daneBT, daneBT[,2], head, 3) # # Zadanie 2.14 # diag2 <- function(mat, n=0) { wymiar = min(dim(mat))-abs(n) if (wymiar<0) return(NULL) if (n==0) return(diag(mat)) if (n<0) return(diag(mat[-1:n,,drop=F])) diag(mat[,-1:-n,drop=F]) } diag2(matrix(1:12,3,4),1) # # Zadanie 2.15 # top10 <- function() { wartosci = sapply(ls(.GlobalEnv), object.size) kolejnosc = order(as.numeric(wartosci), decreasing =T) wartosci[kolejnosc[1:10]] } top10() # # Zadanie 2.16 # library("RODBC") plikXLS <- odbcConnectExcel("c://daneBioTech.xls") sqlTables(plikXLS) ramka1 = sqlQuery(plikXLS, "select * from \"daneBioTech0$\"") ramka2 = sqlQuery(plikXLS, "select * from \"daneBioTech1$\"") # # Zadanie 3.1 # momenty <- function(x) { require(e1071) c(srednia = mean(x), wariancja = var(x), skosnosc = skewness(x), kurtoza = kurtosis(x)) } momenty(rnorm(20)) # # Zadanie 3.2 # hist(daneO$VEGF,30) daneO$noweVEGF = log(daneO$VEGF) hist(daneO$noweVEGF,30, probability =T) gest = density(daneO$noweVEGF) lines(gest$x, gest$y, col="red",lwd=2) # # Zadanie 3.3 # boxplot(daneO$Wiek~daneO$Receptory.estrogenowe) library(vioplot) with(daneO, vioplot(Wiek[Niepowodzenia=="wznowa"], Wiek[Niepowodzenia!="wznowa"])) # # Zadanie 3.4 # attach(daneO) library(car) sp(Wiek, VEGF, smooth=F) sp(VEGF, Wiek, smooth=F) sp(Wiek, VEGF, smooth=F, log="y") sp(Wiek,VEGF,groups=Niepowodzenia, smooth=F, log="y") # # Zadanie 3.5 # x = rexp(20) plot(ecdf(x)) fitdistr(x, "exponential") x = rexp(200) plot(ecdf(x)) x = rexp(2000) plot(ecdf(x)) # # Zadanie 3.6 # (model1 = summary(lm(Wiek~Niepowodzenia, data = daneO))) (model2 = summary(lm(Okres.bez.wznowy~Niepowodzenia, data = daneO))) (model3 = summary(lm(noweVEGF~Niepowodzenia, data = daneO))) c(Wiek = model1$coef[2,4], Okres.bez.wznowy = model2$coef[2,4], noweVEGF = model3$coef[2,4]) model <- aov(noweVEGF~Receptory.progesteronowe, data = daneO) TukeyHSD(model) plot(TukeyHSD(model)) # # Zadanie 3.7 # summary(lm(cisnienie.skurczowe~wiek, data = daneSoc)) # # Zadanie 3.8 # summary(lm(Kreatynina.7~Kreatynina.1+Wiek, data=daneBT)) sp(Kreatynina.7~Kreatynina.1, data=daneBT) sp(Kreatynina.7~Wiek, data=daneBT) # # Zadanie 3.9 # library(nortest) sf.test(daneO$Wiek) sf.test(daneO$Okres.bez.wznowy) sf.test(daneO$VEGF) # # Zadanie 3.10 # N = 1000 n = 50 pwart = numeric(N) for (i in 1:N) { pwart[i] = sf.test(runif(n))$p.value } alfy = seq(0,1,0.01) moce = sapply(alfy, function(x) mean(pwart