Самостоятельная работа №2. Манипуляции со структурами данных

1.Создайте вектор v, в котором содержатся 10 случайных чисел в диапазоне от -100 до +100.

set.seed(123)
v<-runif(10, min = -100, max = 100)
v
##  [1] -42.484496  57.661027 -18.204616  76.603481  88.093457 -90.888700
##  [7]   5.621098  78.483809  10.287003  -8.677053

2.Создайте двумерный массив a с двумя матрицами 5×5, в которых содержались бы числа от 1 до 25. Код должен содержать одну строчку!

a<-array(data=1:25, dim=c(5,5,2))
a
## , , 1
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    6   11   16   21
## [2,]    2    7   12   17   22
## [3,]    3    8   13   18   23
## [4,]    4    9   14   19   24
## [5,]    5   10   15   20   25
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    6   11   16   21
## [2,]    2    7   12   17   22
## [3,]    3    8   13   18   23
## [4,]    4    9   14   19   24
## [5,]    5   10   15   20   25

3.Создайте еще раз объекты (вектор v и массив a) из упражнений 1 и 2, в той же очередности, а затем создайте список list и поместите в него эти объекты. Сколько элементов получилось? Отобразите список.

set.seed(123)

v<-runif(10, min = -100, max = 100)
a<-array(data=1:25, dim=c(5,5,2))
l<-list(v, a)
l
## [[1]]
##  [1] -42.484496  57.661027 -18.204616  76.603481  88.093457 -90.888700
##  [7]   5.621098  78.483809  10.287003  -8.677053
## 
## [[2]]
## , , 1
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    6   11   16   21
## [2,]    2    7   12   17   22
## [3,]    3    8   13   18   23
## [4,]    4    9   14   19   24
## [5,]    5   10   15   20   25
## 
## , , 2
## 
##      [,1] [,2] [,3] [,4] [,5]
## [1,]    1    6   11   16   21
## [2,]    2    7   12   17   22
## [3,]    3    8   13   18   23
## [4,]    4    9   14   19   24
## [5,]    5   10   15   20   25
  1. Создайте пустой числовой вектор a, содержащий 10 элементов:
a<-numeric(10)
a
##  [1] 0 0 0 0 0 0 0 0 0 0

5.Создайте два вектора - a и b, в первом - числа от 1 до 10, во втором от 11 до 20. Перемножьте два вектора, сохранив результат в третьем векторе c. Выведите на экран вектор с с помощью функции print().

a<-1:10
b<-11:20
c<-a*b
print(c)
##  [1]  11  24  39  56  75  96 119 144 171 200

6.Измените код так, чтобы количество строк стало равным 5, столбцов 2, и заполнение матрицы было бы по умолчанию, то есть по столбцам:

data <- c(1, 2, 3, 4, 5, 6, 7, 8, 9)
A <- matrix(data, ncol=2, nrow=5)
A
##      [,1] [,2]
## [1,]    1    6
## [2,]    2    7
## [3,]    3    8
## [4,]    4    9
## [5,]    5    1

7.У вас есть датафрейм df с данными. Добавьте в нее переменную d и запишите в нее переменную c, умноженную на 4.

df<- data.frame(a = c(1:4), b = c("red","yellow","green","white"), c = rnorm(4, mean=0, sd = 1))
df$d<-df$c*4
df
##   a      b          c         d
## 1 1    red  1.7150650  6.860260
## 2 2 yellow  0.4609162  1.843665
## 3 3  green -1.2650612 -5.060245
## 4 4  white -0.6868529 -2.747411

5.5 Самостоятельная работа

1.Создайте функцию, которая будет возвращать сумму двух чисел. Назовите функцию mysum.

mysum<-function() {
   return(a+b)
}
mysum()
##  [1] 12 14 16 18 20 22 24 26 28 30

2.Создайте функцию, проверяющую принадлежность числа некоторому вектору. Если число в векторе содержится, функция должна вернуть TRUE.

n<-1:6
vect<-function(a=2) {
  result<-a=="n"
  print(result)
}

в данном примере мы создали вектор от 1 до 6, в результате должно отображатьсьтя принадлежит ли а вектору n. однако что-то не получается(

vect()
## [1] FALSE

3.Создайте функцию, на входе которой будет даваться датафрейм, а на выходе - наименование каждой переменной и тип (класс) данных, которые в них содержатся. Например, переменная1 числовая.

d<-data.frame(a = c(1:3),b=c(2:4),c=c(2,4,6))
new.function<-function(d)
  result = class(a,b,c)

4.Создать функцию, аргументами которой являются вектор и число. На выходе функция должна показывать, сколько раз число встречается в данном векторе.

a<-runif(n, min=1, max=6)
a
## [1] 2.639604 5.772518 5.447697 4.464017 4.202534 5.971349
w<-function() {
   result=(3=="a")
   print(result)
}
3=="w"
## [1] FALSE