Basis of R language
In [157]:
#вызов справки
?vector()
In [37]:
#все простые объекты являются векторами

a<-1
a.string<-'1'

#векторы задаются через команду c()
b<-c(1,2,3,4)
b.str <- c('a', 'A', 'b', a)
In [20]:
a
1
In [22]:
#результат есть строковое значение, не число
a.string
'1'
In [38]:
#является ли а числовым объектом
is.numeric(a)

#является ли а.string числовым объектом
is.numeric(a.string)

#является ли b числовым объектом
is.numeric(b)

#является ли b.str числовым объектом
is.numeric(b.str)
TRUE
FALSE
TRUE
FALSE
In [40]:
#является ли a.string символьным\строковым объектом
is.character(a)

#является ли a.string символьным\строковым объектом
is.character(a.string)

#является ли b символьным\строковым объектом
is.character(b)

#является ли b.str символьным\строковым объектом
is.character(b.str)

#ВАЖНО! объединение в вектор строковых и числовых объектов переведет все объекты к строковому типу
FALSE
TRUE
FALSE
TRUE
In [42]:
#конвертировать строку в число, если это возможно
b.num <- as.numeric(a.string)
b.num
is.numeric(b.num)
1
TRUE
In [45]:
#операции производимые с веторами обычно проводятся поэлементно
#вновь инициализируем вектор
b<-c(1,2,3,4)

b-1

#возведение в квадрат
b^2
  1. 1
  2. 2
  3. 3
  4. 4
  1. 0
  2. 1
  3. 2
  4. 3
  1. 1
  2. 4
  3. 9
  4. 16
In [50]:
#есть встроенные функции, обрабатывающие вектор целиком

#cумма
sum(b)

#среднее
mean(b)

#стандартное отклонение
sd(b)
10
2.5
1.29099444873581
In [57]:
#добавить элемент к вектору
#исходный вид b
b

#добавим элемент в конец b
e<-c(b,5)
e

#добавим элемент в начало b
d<-c(10,b)
d
  1. 1
  2. 2
  3. 3
  4. 4
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  1. 10
  2. 1
  3. 2
  4. 3
  5. 4
In [65]:
#выбрать элемент из вектора

#инициализируем b
b<-c(10,20,30,40)

#выберем первый элемент из b
b[1]

#выберем последений элемент из b указав длину b, полученную с помощью функции length()
b[length(b)]

#выберем несколько значений из вектора (последнее значение включено в выбор!)
b[1:3]

#обратимся к элементу, не присутсвующему в b
b[5]

#удалим элемент из b
b[-3]
10
40
  1. 10
  2. 20
  3. 30
<NA>
  1. 10
  2. 20
  3. 40
In [77]:
#инициализируем матрицу с 5 колонками и 3 строками, заполненными значением 10

a.mat<-matrix(10, ncol=5, nrow=3)
a.mat

#если не задавать значение при инициализации матрицы
b.mat<-matrix(ncol=5, nrow=3)
b.mat

#обращение к элементам матрицы. 
#заменим значение в 1й строке 3м столбец на -5
a.mat[1,3]<- -5
a.mat
1010101010
1010101010
1010101010
NANANANANA
NANANANANA
NANANANANA
1010-51010
1010101010
1010101010
In [78]:
#сейчас матрица состоит из числовых значений
is.numeric(a.mat)
is.numeric(a.mat[1,1])
#заменим значение в 2й строке 2м столбец на строковый объект
a.mat[2,2]<-'some_string'
a.mat
#заметим,что теперь все элементы матрицы стали строковыми
is.numeric(a.mat)
is.numeric(a.mat[1,1])
TRUE
TRUE
10 10 -5 10 10
10 some_string10 10 10
10 10 10 10 10
FALSE
FALSE
In [122]:
#инициализируем матрицу
a.mat<-matrix(5, ncol=3, nrow=2)
a.mat

#добавим 2 столбца к матрице
a.mat<-cbind(a.mat, c(2,3), c(3,7))
a.mat

#добавим строку к матрице
a.mat<-rbind(a.mat, c(2,8,3,10,12))
a.mat
555
555
55523
55537
5 5 5 2 3
5 5 5 3 7
2 8 3 1012
In [199]:
#работа с dataframe
#dataframe похож на матрицы, но может содержать значения строковых типов без преобразования для остальных значений столбцов таблицы
#конфертируем матрицу в data frame
a.df<-as.data.frame(a.mat)

#добавим строковое значениею. Индексация по положению индентична индексации в матрицах
a.df[2,3]<-'some_string'
a.df

#можем манипулировать со значениями
a.df[1,1] + a.df[2,2]

#3й столбец стал строковым
is.character(a.df[,3])
is.numeric(a.df[,3])
V1V2V3V4V5
5 5 5 2 3
5 5 some_string 3 7
2 8 3 10 12
10
TRUE
FALSE
In [200]:
#остальные столбцы остались числовыми
is.numeric(a.df[,1])
is.numeric(a.df[,2])
is.numeric(a.df[,4])
is.numeric(a.df[,5])
TRUE
TRUE
TRUE
TRUE
In [204]:
#зададим имена столбцов df
colnames(a.df)<-c('first_col','2_col','third_col','4_col','last_col')
a.df
first_col2_colthird_col4_collast_col
5 5 5 2 3
5 5 some_string 3 7
2 8 3 10 12
In [206]:
#можем обращаться по имени
a.df[3, '2_col']
8
In [123]:
a.mat

#ускоренное применение функций вдоль размерностей (строк, столбцов) с помощью Си-ускоренной функции apply
#среднее по столбцам
a.mat.col.mean<-apply(a.mat, 1, mean)
a.mat.col.mean

#среднее по строкам
a.mat.row.mean<-apply(a.mat, 2, mean)
a.mat.row.mean
5 5 5 2 3
5 5 5 3 7
2 8 3 1012
  1. 4
  2. 5
  3. 7
  1. 4
  2. 6
  3. 4.33333333333333
  4. 5
  5. 7.33333333333333
In [124]:
#напишем свою функцию:
my_mean_func<-function(a){
    my.sum<-sum(a)
    my.mean<-my.sum/length(a)
    return(my.mean)
}

#инициализируем некий вектор
my.vector<-c(10,10,20,20)
#подставим в функцию
my_mean_func(my.vector)
15
In [125]:
#инициализируем матрицу
new.matrix<-matrix(ncol=4, nrow=3)
new.matrix

#добавим элементы в матрицу с помощью веторов сгенерированных функцией rep() - возвращает вектор заданной длины заполненный одним значением
new.matrix[1,]<-rep(10, ncol(new.matrix))
new.matrix[2,]<-rep(20, ncol(new.matrix))
new.matrix[3,]<-rep(30, ncol(new.matrix))

#посмотрим что получилось
new.matrix

#применим функцию к каждой строке матрицы с помощью цикла
for (i in 1:nrow(new.matrix)){
    mean.of.row<-my_mean_func(new.matrix[i,])
    print(mean.of.row)
}
NANANANA
NANANANA
NANANANA
10101010
20202020
30303030
[1] 10
[1] 20
[1] 30
In [126]:
#применим функцию к каждой строке матрицы с помощью цикла
#добавим условный оператор, на выполнение цикла
for (i in 1:nrow(new.matrix)){
    mean.of.row<-my_mean_func(new.matrix[i,])
    if(mean.of.row<=20){print(mean.of.row)}
    else{print('mean value >20')}
}
[1] 10
[1] 20
[1] "mean value >20"
In [136]:
#действия над Not Avaible (NA) вегда дают NA

bad.vector<-c(1,5,NA)
bad.vector

mean(bad.vector)

bad.vector[3]+1

#является ли элемент NA
is.na(bad.vector[3])

#отбрасывание NA элементов
good.vector<-na.omit(bad.vector)
good.vector
  1. 1
  2. 5
  3. <NA>
<NA>
<NA>
TRUE
  1. 1
  2. 5
In [215]:
#добавление числового значения в текст:

a.string <-'There are 40 students in class and only 39.5 chairs'
b.string <-paste0('There are ', 40, ' students in class and only ', 39.5, ' chairs')

c.value<-40
d.value<-39.5
c.string <-paste0('There are ', c.value, ' students in class and only ', d.value, ' chairs')

e.string<-sprintf('There are %2$i students in class and only %1$.2f chairs', d.value, c.value)
#цифра между сиволами %..$ указывает на порядковый номер аргумента
#i - целочисленный формат
#f - дробный формат, число знаков после запятой указывается после символа $
In [216]:
#посмотрим, что получилось
a.string
b.string
c.string
e.string
'There are 40 students in class and only 39.5 chairs'
'There are 40 students in class and only 39.5 chairs'
'There are 40 students in class and only 39.5 chairs'
'There are 40 students in class and only 39.50 chairs'
In [141]:
#установка библиотеки kohonen из US зеркала
install.packages("kohonen", repos='http://cran.us.r-project.org')

#список доступных зеркал здесь: https://cran.r-project.org/mirrors.html

#подключение библиотеки kohonen
library(kohonen)
#выбор массива данных встроенного в библиотеку
data(wines, package = "kohonen")

#обучение карты кохонена с 20 нейронами
wines.som <- som(X=wines, somgrid(5, 4, "hexagonal"))
Installing package into ‘/home/sash_sokolov/R/x86_64-pc-linux-gnu-library/3.4’
(as ‘lib’ is unspecified)
In [144]:
#просмотр структуры объекта wines.som
str(wines.som)
List of 13
 $ data            :List of 1
  ..$ : num [1:177, 1:13] 13.2 13.2 14.4 13.2 14.2 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:13] "alcohol" "malic acid" "ash" "ash alkalinity" ...
 $ unit.classif    : num [1:177] 15 4 5 19 5 10 10 15 15 5 ...
 $ distances       : num [1:177] 64.2 2421.7 891.6 316.6 3548.2 ...
 $ grid            :List of 6
  ..$ pts              : num [1:20, 1:2] 1.5 2.5 3.5 4.5 5.5 1 2 3 4 5 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : NULL
  .. .. ..$ : chr [1:2] "x" "y"
  ..$ xdim             : num 5
  ..$ ydim             : num 4
  ..$ topo             : chr "hexagonal"
  ..$ neighbourhood.fct: Factor w/ 2 levels "bubble","gaussian": 1
  ..$ toroidal         : logi FALSE
  ..- attr(*, "class")= chr "somgrid"
 $ codes           :List of 1
  ..$ : num [1:20, 1:13] 12.6 13.1 13.5 13.5 14.1 ...
  .. ..- attr(*, "dimnames")=List of 2
  .. .. ..$ : chr [1:20] "V1" "V2" "V3" "V4" ...
  .. .. ..$ : chr [1:13] "alcohol" "malic acid" "ash" "ash alkalinity" ...
 $ changes         : num [1:100, 1] 2.19 2.2 2.47 2.03 1.89 ...
 $ alpha           : num [1:2] 0.05 0.01
 $ radius          : Named num [1:2] 2.65 0
  ..- attr(*, "names")= chr [1:2] "66.66667%" ""
 $ user.weights    : num 1
 $ distance.weights: num 1
 $ whatmap         : int 1
 $ maxNA.fraction  : int 0
 $ dist.fcts       : chr "sumofsquares"
 - attr(*, "class")= chr "kohonen"
In [145]:
#доступ к структурам объекта
wines.som$codes
  1. alcoholmalic acidashash alkalinitymagnesiumtot. phenolsflavonoidsnon-flav. phenolsproanthcol. int.col. hueOD ratioproline
    V112.60256 3.021622 2.600762 21.76928 101.347481.886965 1.062230 0.44250430.88158464.699926 0.90479962.021232 598.2508
    V213.11080 1.987127 2.306386 20.33673 89.955922.309828 1.517971 0.42752961.60738447.024321 0.77481622.217898 660.2449
    V313.53654 2.155765 2.383226 18.40942 111.019932.439415 2.197939 0.34251941.68893115.505488 0.90557353.028645 792.6185
    V413.54541 1.831877 2.478072 16.50553 102.988092.916500 3.112591 0.27787862.01952405.715809 1.04823402.980823 1135.8860
    V514.08963 1.835002 2.431131 16.58593 107.972613.223124 3.405739 0.27287582.14262817.115797 1.10133563.047106 1509.4127
    V612.61661 2.685908 2.250167 20.36997 90.869921.766280 1.280483 0.42792391.23382744.423674 0.89298262.208262 510.0743
    V712.83371 3.607803 2.274575 20.34572 87.033751.844921 1.084209 0.48864521.12270704.576001 0.81891672.142449 579.9211
    V812.72386 2.692305 2.397624 19.21597 98.364121.935300 1.339020 0.46670391.29834876.184450 0.88091072.059556 683.1659
    V912.85878 2.449717 2.445699 20.05171 108.292052.178876 1.729747 0.35222701.51269025.454044 0.86150672.524026 859.7398
    V1013.82506 1.756617 2.541507 17.62969 106.863882.789064 2.948347 0.30891581.79831206.085132 1.11870423.003936 1289.5018
    V1112.47066 2.206019 2.464097 21.78817 97.110572.101516 1.984592 0.42277541.41108215.282338 0.90115002.511419 461.9108
    V1212.63463 3.263045 2.296878 21.56827 98.074741.931794 1.345907 0.39589971.57709534.754901 0.84850772.273503 560.4971
    V1312.47677 3.060418 2.089867 19.23659 103.463181.882266 1.383018 0.36623151.57738384.413856 1.00474622.352283 717.3235
    V1413.59816 1.999211 2.529878 19.51316 104.227382.732743 2.804429 0.31319171.80577134.994958 1.09000003.273126 919.9517
    V1513.73861 2.102335 2.273127 16.34511 100.813352.685780 2.759118 0.26862711.71201574.949176 1.04012643.233694 1043.9915
    V1612.27046 2.034582 2.247922 20.87882 93.389882.317193 2.223934 0.37118281.57982272.619687 1.02224712.953682 328.2349
    V1712.44264 2.600136 2.192707 19.77172 87.351102.330623 2.106283 0.34001011.61026753.444323 0.98834472.619478 401.2666
    V1812.68183 2.128378 2.384935 21.00350 100.141771.886113 1.273388 0.34742321.27292245.281141 0.83258022.161208 626.9491
    V1913.37620 3.235082 2.516195 18.83689 112.043852.263079 1.811536 0.36800441.68541415.495054 0.89414802.547933 751.5300
    V2013.43899 1.694482 2.320549 19.69650 124.938552.878777 2.817655 0.28856152.27095844.402306 1.11490323.111594 972.1127
In [146]:
#использование встроенных методов визуализации
plot(wines.som, type = "codes")
In [147]:
plot(wines.som, type = "dist.neighb")
In [149]:
#сохранение модели в текущую дерикторию
save(wines.som, file = "my_som_model.rda")
In [150]:
#уничтожим модель
wines.som<-NA
wines.som$codes
Error in wines.som$codes: $ operator is invalid for atomic vectors
Traceback:
In [207]:
#загрузим модель с диска
load("my_som_model.rda")

#проверим, загружена ли модель
wines.som$codes
  1. alcoholmalic acidashash alkalinitymagnesiumtot. phenolsflavonoidsnon-flav. phenolsproanthcol. int.col. hueOD ratioproline
    V112.60256 3.021622 2.600762 21.76928 101.347481.886965 1.062230 0.44250430.88158464.699926 0.90479962.021232 598.2508
    V213.11080 1.987127 2.306386 20.33673 89.955922.309828 1.517971 0.42752961.60738447.024321 0.77481622.217898 660.2449
    V313.53654 2.155765 2.383226 18.40942 111.019932.439415 2.197939 0.34251941.68893115.505488 0.90557353.028645 792.6185
    V413.54541 1.831877 2.478072 16.50553 102.988092.916500 3.112591 0.27787862.01952405.715809 1.04823402.980823 1135.8860
    V514.08963 1.835002 2.431131 16.58593 107.972613.223124 3.405739 0.27287582.14262817.115797 1.10133563.047106 1509.4127
    V612.61661 2.685908 2.250167 20.36997 90.869921.766280 1.280483 0.42792391.23382744.423674 0.89298262.208262 510.0743
    V712.83371 3.607803 2.274575 20.34572 87.033751.844921 1.084209 0.48864521.12270704.576001 0.81891672.142449 579.9211
    V812.72386 2.692305 2.397624 19.21597 98.364121.935300 1.339020 0.46670391.29834876.184450 0.88091072.059556 683.1659
    V912.85878 2.449717 2.445699 20.05171 108.292052.178876 1.729747 0.35222701.51269025.454044 0.86150672.524026 859.7398
    V1013.82506 1.756617 2.541507 17.62969 106.863882.789064 2.948347 0.30891581.79831206.085132 1.11870423.003936 1289.5018
    V1112.47066 2.206019 2.464097 21.78817 97.110572.101516 1.984592 0.42277541.41108215.282338 0.90115002.511419 461.9108
    V1212.63463 3.263045 2.296878 21.56827 98.074741.931794 1.345907 0.39589971.57709534.754901 0.84850772.273503 560.4971
    V1312.47677 3.060418 2.089867 19.23659 103.463181.882266 1.383018 0.36623151.57738384.413856 1.00474622.352283 717.3235
    V1413.59816 1.999211 2.529878 19.51316 104.227382.732743 2.804429 0.31319171.80577134.994958 1.09000003.273126 919.9517
    V1513.73861 2.102335 2.273127 16.34511 100.813352.685780 2.759118 0.26862711.71201574.949176 1.04012643.233694 1043.9915
    V1612.27046 2.034582 2.247922 20.87882 93.389882.317193 2.223934 0.37118281.57982272.619687 1.02224712.953682 328.2349
    V1712.44264 2.600136 2.192707 19.77172 87.351102.330623 2.106283 0.34001011.61026753.444323 0.98834472.619478 401.2666
    V1812.68183 2.128378 2.384935 21.00350 100.141771.886113 1.273388 0.34742321.27292245.281141 0.83258022.161208 626.9491
    V1913.37620 3.235082 2.516195 18.83689 112.043852.263079 1.811536 0.36800441.68541415.495054 0.89414802.547933 751.5300
    V2013.43899 1.694482 2.320549 19.69650 124.938552.878777 2.817655 0.28856152.27095844.402306 1.11490323.111594 972.1127
In [208]:
#сохраним таблицу в виде .csv файла на диск
write.csv(wines, 'my_wines.csv', row.names=FALSE)
In [211]:
#загрузим таблицу в виде dataframe с диска
loaded.wines <- read.csv('my_wines.csv')
is.data.frame(loaded.wines)
In [213]:
#посомтрим на загруженный dataframe
loaded.wines
alcoholmalic.acidashash.alkalinitymagnesiumtot..phenolsflavonoidsnon.flav..phenolsproanthcol..int.col..hueOD.ratioproline
13.201.78 2.14 11.2 100 2.65 2.76 0.26 1.28 4.38 1.05 3.40 1050
13.162.36 2.67 18.6 101 2.80 3.24 0.30 2.81 5.68 1.03 3.17 1185
14.371.95 2.50 16.8 113 3.85 3.49 0.24 2.18 7.80 0.86 3.45 1480
13.242.59 2.87 21.0 118 2.80 2.69 0.39 1.82 4.32 1.04 2.93 735
14.201.76 2.45 15.2 112 3.27 3.39 0.34 1.97 6.75 1.05 2.85 1450
14.391.87 2.45 14.6 96 2.50 2.52 0.30 1.98 5.25 1.02 3.58 1290
14.062.15 2.61 17.6 121 2.60 2.51 0.31 1.25 5.05 1.06 3.58 1295
14.831.64 2.17 14.0 97 2.80 2.98 0.29 1.98 5.20 1.08 2.85 1045
13.861.35 2.27 16.0 98 2.98 3.15 0.22 1.85 7.22 1.01 3.55 1045
14.102.16 2.30 18.0 105 2.95 3.32 0.22 2.38 5.75 1.25 3.17 1510
14.121.48 2.32 16.8 95 2.20 2.43 0.26 1.57 5.00 1.17 2.82 1280
13.751.73 2.41 16.0 89 2.60 2.76 0.29 1.81 5.60 1.15 2.90 1320
14.751.73 2.39 11.4 91 3.10 3.69 0.43 2.81 5.40 1.25 2.73 1150
14.381.87 2.38 12.0 102 3.30 3.64 0.29 2.96 7.50 1.20 3.00 1547
13.631.81 2.70 17.2 112 2.85 2.91 0.30 1.46 7.30 1.28 2.88 1310
14.301.92 2.72 20.0 120 2.80 3.14 0.33 1.97 6.20 1.07 2.65 1280
13.831.57 2.62 20.0 115 2.95 3.40 0.40 1.72 6.60 1.13 2.57 1130
14.191.59 2.48 16.5 108 3.30 3.93 0.32 1.86 8.70 1.23 2.82 1680
13.643.10 2.56 15.2 116 2.70 3.03 0.17 1.66 5.10 0.96 3.36 845
14.061.63 2.28 16.0 126 3.00 3.17 0.24 2.10 5.65 1.09 3.71 780
12.933.80 2.65 18.6 102 2.41 2.41 0.25 1.98 4.50 1.03 3.52 770
13.711.86 2.36 16.6 101 2.61 2.88 0.27 1.69 3.80 1.11 4.00 1035
12.851.60 2.52 17.8 95 2.48 2.37 0.26 1.46 3.93 1.09 3.63 1015
13.501.81 2.61 20.0 96 2.53 2.61 0.28 1.66 3.52 1.12 3.82 845
13.052.05 3.22 25.0 124 2.63 2.68 0.47 1.92 3.58 1.13 3.20 830
13.391.77 2.62 16.1 93 2.85 2.94 0.34 1.45 4.80 0.92 3.22 1195
13.301.72 2.14 17.0 94 2.40 2.19 0.27 1.35 3.95 1.02 2.77 1285
13.871.90 2.80 19.4 107 2.95 2.97 0.37 1.76 4.50 1.25 3.40 915
14.021.68 2.21 16.0 96 2.65 2.33 0.26 1.98 4.70 1.04 3.59 1035
13.731.50 2.70 22.5 101 3.00 3.25 0.29 2.38 5.70 1.19 2.71 1285
13.32 3.24 2.38 21.5 92 1.93 0.76 0.45 1.25 8.4200000.55 1.62 650
13.08 3.90 2.36 21.5 113 1.41 1.39 0.34 1.14 9.4000000.57 1.33 550
13.50 3.12 2.62 24.0 123 1.40 1.57 0.22 1.25 8.6000000.59 1.30 500
12.79 2.67 2.48 22.0 112 1.48 1.36 0.24 1.26 10.8000000.48 1.47 480
13.11 1.90 2.75 25.5 116 2.20 1.28 0.26 1.56 7.1000000.61 1.33 425
13.23 3.30 2.28 18.5 98 1.80 0.83 0.61 1.87 10.5200000.56 1.51 675
12.58 1.29 2.10 20.0 103 1.48 0.58 0.53 1.40 7.6000000.58 1.55 640
13.17 5.19 2.32 22.0 93 1.74 0.63 0.61 1.55 7.9000000.60 1.48 725
13.84 4.12 2.38 19.5 89 1.80 0.83 0.48 1.56 9.0100000.57 1.64 480
12.45 3.03 2.64 27.0 97 1.90 0.58 0.63 1.14 7.5000000.67 1.73 880
14.34 1.68 2.70 25.0 98 2.80 1.31 0.53 2.70 13.0000000.57 1.96 660
13.48 1.67 2.64 22.5 89 2.60 1.10 0.52 2.29 11.7500000.57 1.78 620
12.36 3.83 2.38 21.0 88 2.30 0.92 0.50 1.04 7.6500000.56 1.58 520
13.69 3.26 2.54 20.0 107 1.83 0.56 0.50 0.80 5.8800000.96 1.82 680
12.85 3.27 2.58 22.0 106 1.65 0.60 0.60 0.96 5.5800000.87 2.11 570
12.96 3.45 2.35 18.5 106 1.39 0.70 0.40 0.94 5.2800000.68 1.75 675
13.78 2.76 2.30 22.0 90 1.35 0.68 0.41 1.03 9.5800000.70 1.68 615
13.73 4.36 2.26 22.5 88 1.28 0.47 0.52 1.15 6.6200000.78 1.75 520
13.45 3.70 2.60 23.0 111 1.70 0.92 0.43 1.46 10.6800000.85 1.56 695
12.82 3.37 2.30 19.5 88 1.48 0.66 0.40 0.97 10.2600000.72 1.75 685
13.58 2.58 2.69 24.5 105 1.55 0.84 0.39 1.54 8.6600000.74 1.80 750
13.40 4.60 2.86 25.0 112 1.98 0.96 0.27 1.11 8.5000000.67 1.92 630
12.20 3.03 2.32 19.0 96 1.25 0.49 0.40 0.73 5.5000000.66 1.83 510
12.77 2.39 2.28 19.5 86 1.39 0.51 0.48 0.64 9.8999990.57 1.63 470
14.16 2.51 2.48 20.0 91 1.68 0.70 0.44 1.24 9.7000000.62 1.71 660
13.71 5.65 2.45 20.5 95 1.68 0.61 0.52 1.06 7.7000000.64 1.74 740
13.40 3.91 2.48 23.0 102 1.80 0.75 0.43 1.41 7.3000000.70 1.56 750
13.27 4.28 2.26 20.0 120 1.59 0.69 0.43 1.35 10.2000000.59 1.56 835
13.17 2.59 2.37 20.0 120 1.65 0.68 0.53 1.46 9.3000000.60 1.62 840
14.13 4.10 2.74 24.5 96 2.05 0.76 0.56 1.35 9.2000000.61 1.60 560
In [214]:
#получим краткую сводку по dataframe
summary(loaded.wines)
    alcohol        malic.acid        ash        ash.alkalinity 
 Min.   :11.03   Min.   :0.74   Min.   :1.360   Min.   :10.60  
 1st Qu.:12.36   1st Qu.:1.60   1st Qu.:2.210   1st Qu.:17.20  
 Median :13.05   Median :1.87   Median :2.360   Median :19.50  
 Mean   :12.99   Mean   :2.34   Mean   :2.366   Mean   :19.52  
 3rd Qu.:13.67   3rd Qu.:3.10   3rd Qu.:2.560   3rd Qu.:21.50  
 Max.   :14.83   Max.   :5.80   Max.   :3.230   Max.   :30.00  
   magnesium       tot..phenols     flavonoids    non.flav..phenols
 Min.   : 70.00   Min.   :0.980   Min.   :0.340   Min.   :0.1300   
 1st Qu.: 88.00   1st Qu.:1.740   1st Qu.:1.200   1st Qu.:0.2700   
 Median : 98.00   Median :2.350   Median :2.130   Median :0.3400   
 Mean   : 99.59   Mean   :2.292   Mean   :2.023   Mean   :0.3623   
 3rd Qu.:107.00   3rd Qu.:2.800   3rd Qu.:2.860   3rd Qu.:0.4400   
 Max.   :162.00   Max.   :3.880   Max.   :5.080   Max.   :0.6600   
    proanth        col..int.         col..hue        OD.ratio    
 Min.   :0.410   Min.   : 1.280   Min.   :0.480   Min.   :1.270  
 1st Qu.:1.250   1st Qu.: 3.210   1st Qu.:0.780   1st Qu.:1.930  
 Median :1.550   Median : 4.680   Median :0.960   Median :2.780  
 Mean   :1.587   Mean   : 5.055   Mean   :0.957   Mean   :2.604  
 3rd Qu.:1.950   3rd Qu.: 6.200   3rd Qu.:1.120   3rd Qu.:3.170  
 Max.   :3.580   Max.   :13.000   Max.   :1.710   Max.   :4.000  
    proline      
 Min.   : 278.0  
 1st Qu.: 500.0  
 Median : 672.0  
 Mean   : 745.1  
 3rd Qu.: 985.0  
 Max.   :1680.0  
In [ ]: