This repository has been archived by the owner on Jan 21, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathLab1_Basics.R
134 lines (103 loc) · 3.03 KB
/
Lab1_Basics.R
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
#установим библиотеку
install.packages("foreign")
library(foreign)
getwd() #узнать, какая папка является рабочей
#базовые операции
12+18
5*3
2^3
sqrt(16)
16 ^ 1/4
16^(1/4)
#округление
round(4.2)
round(4.555,2)
#математические константы и функции
pi
exp(1)
exp(2)
log(exp(1))
log10(100)
log(4,base = 2)
#присваивание
x <- 3
x = 4
x = x +2
x1 = 9.5
is.numeric(x1) #проверим, является ли числом
is.integer(x1) #проверим, является ли целым числом
is.character(x1) #проверим, является ли текстовой переменной
is.logical(x1) #проверим, является ли логической переменной
x2 = "welcome"
class(x2) #проверим, какого типа переменная
#проверить, что делает функция
?class
help(class)
#изменение типа переменной
two = "2" #строка
two = as.numeric(two) #число
u = TRUE
e = FALSE
as.numeric(u) #число 1
as.numeric(e) #число 0
as.numeric("abc") #не получится
#e в числе - это число 10, запись 9.313226e+20 означает, что число 9.31322 надо умножить
#на 10^20. А если нужно было бы выдать очень маленькое число, 10 стояло бы в
#отрицательной степени 9.313226e-20
#работа с текстовыми переменными
x2 = sub("e","3",x2) #(что заменяем(первое найденное), на что заменяем, где заменяем)
x2 = gsub("3","e",x2) #замена всех совпадений
#логические выражения
x = 2
y = 10
x > y
x < y
x == y
x != y
x & y < 11
x | y < 5
#матрицы
#создание матрицы
M = matrix(NA,nrow = 2, ncol = 3)
dim(M) #размерность матрицы
#создание матрицы из векторов
x = c(1,2,3,0)
y = c(4,5,6,0)
z = c(7,8,9,0)
M_cols = cbind(x,y,z) #c - от columns
M_rows = rbind(x,y,z) #r - от rows
#создание матрицы разбиванием длинного вектора
long_vec = c(1,2,3,4,5,6,7,8,9,0,5,0)
length(long_vec) #просмотр количества элементов
m1 = matrix(long_vec, 3,4) #получим матрицу с 3 строками и 4 столбцами
rownames(m1) = c("r1","r2","r3") #даём названия строкам матрицы
colnames(m1) = c("A","B","C","D") #даём названия столбцам матрицы
dimnames(M_cols) = list(c("r1","r2","r3","r4"), c("X","Y","Z")) #даём названия сначала строкам, затем столбцам одной командой
#линейная алгебра
A = matrix(c(1,4,9,2,9,5,3,16,1,8,7,4),3,4)
t(A) #транспонирование матрицы
#элементы матрицы
A[1,1]
A[1,] #вся первая строка
A[,2] #весь второй столбец
A[2,2:4]
A[2,c(3,2)]
A[,c(3,2)]
A = runif(9) #генерация случайный чисел, равномерно распределённые на [0,1]
dim(A) = c(3,3) #задаём размерность, чтобы из вектора получилась матрица
B = runif(3)
dim(B) = c(3,1)
solve(A,B) #решение уравнения Ax=B
#списки
#создание списков
L = list(c(1,2,3,4),c(5,6,7,8))
grades = list(c("a","b","c","d"),c(5,6,7,8))
grades = list(names = c("a","b","c","d"),marks = c(5,6,7,8))
str(grades) #узнать структуру списка
#обращение к элементам списка
grades$names #вызов именного вектора из списка
L[[1]] #первый элемент списка
L[[1]][4] #четвёртый элемент первого элемента списка
L[[3]] = c(8,9) #добавили в список третий вектор
L[[3]][3] = 0 #добавили третий элемент третьего вектора в списке
vec_marks = unlist(grades$marks) #превращает список в вектор