Обучение Р | Часть 2 | Переменные и функции
фото Маркус Списке на Скрыть
Переменные
x <- (1:10)
x = (1:10)
(1:10) -> x
assign(“x”, 1:10)
Все вышеперечисленные способы присваивают массив из 1
к 10
к переменной x
.
Это операторы присваивания =
,->
, <-
.
Другой распространенной функцией для создания вектора или списка является c(…)
функция.
c(1,10:13)
Результатом для этого будет массив1 10 11 12 13
. Это означает объединение объектов/переменных, разделенных запятыми.c(1:5, 10.5, “next”)
Результатом для этого будет массив“1” “2” “3” “4” “5” “10.5” “next”
.y = c(1,2,3)
&x = c(y, 1, y)
Это пример использования переменных для создания новых переменных. Здесь значениеy
было бы1 2 3
в то время какx
было бы1 2 3 1 1 2 3
.
Для дальнейшего использования c(…)
ссылка на функцию
Встроенный Функции
c(…)
_— _Как объяснил выше.ls()
или жеobjects()
_ — _Показывает список существующих объектов, которые сделаны.rm(“x”)
_ — _Удаляет объект. Параметр — имя объекта.sum(“x”)
_ —Дает сумму вектораx
.
Например, если_x
является1 2 3 1 1 2 3
тогдаsum(“x”)
было бы13
.sqrt(“x”)
_ — _Выдает квадратный корень из вектораx
.
Ф или пример, еслиx
является1 4 9
тогдаsqrt(“x”)
будет другим вектором со значениями1 2 3
.seq(…)
_ — _Эта функция используется для генерации последовательности чисел. Он принимает разные параметры, такие какfrom
(Начальное значение последовательности),to
(Конечное значение последовательности),by
(Число, на которое должна быть увеличена последовательность),length.out
( Длина последовательности) а такжеalong.with
_(_Это список векторов длиной n, и он используется только для получения длины этого переданного списка. Странно😷)
Пример:-seq(from=1, to=4, by=0.5)
— Дает последовательность из1
к4
с0.5
приращение.
Ещеseq(…)
здесь.paste(…)
Эта функция используется для создания строк с использованием конкатенации векторов с использованием двух параметров, а именноsep
&collapse
.sep
обеспечивает разделитель между конкатенированными векторами, в то время какcollapse
предоставляет разделитель, который объединяет значения в объединенном векторе. (Начало? 🤒) Давайте узнаем это на нескольких примерах.paste(“xyz”, 1:3)
—“xyz 1” “xyz 2” “xyz 3”
(это безsep
&collapse
)paste(“xyz”, c(1,2,”variable”,3), sep=”,”)
—“xyz,1” “xyz,2” “xyz,variable” “xyz,3”
(это только сsep
)paste(c(1:5), c(5:10), sep = “: “, collapse = “; “)
—“1: 5; 2: 6; 3: 7; 4: 8; 5: 9; 1: 10”
(это сsep
а такжеcollapse
; Обратите внимание, что это формирует одну строку 😄.)
Ещеpaste(…)
здесь.rep(x, …)
_ —_ Как следует из названия, эта функция используется для повторения существующего вектора. Параметры, которые может принимать эта функция:times
(Сколько раз должен повторяться вектор),length.out
(Желаемая длина выходного вектора) &each
( Сколько раз должен повторяться каждый элемент вектора)rep(c(1,2,3), 3) or rep(c(1:3), times=3)
—1 2 3 1 2 3 1 2 3
rep(c(1:3), each=3)
—1 1 1 2 2 2 3 3 3
Ещеrep(x, …)
здесь.
Пользовательские функции
В приведенном ниже примере показан простой способ написать однострочную функцию, которая возвращает квадрат переменной. Имя функции здесь fn
.
fn <- function(a) {a*a}
fn(10)
Пример блока кода в функции.
fn -> function(a, b) { c = a * b c = c + b print(x)}
fn(10, 20)
Функции с loops
,if-else
.
primeNumber = function(n) {
if(n>=2) {
s = seq(2,n) p = c() #Initialising the vector which stores prime numbers
for(i in seq(2,n)) { if(any(s == i) { p = c(p, i) s = c(s[(s%%i) != 0], i) } } return(p) } else { stop("Input greater than 2") }}
Приведенный выше пример возвращает вектор со всемипростые числа вплоть до n
передается в функцию. stop
функция здесь останавливает выполнение и выдает ошибку.
Начальный p = c()
используется для инициализации вектора, в котором хранится простое число. А также s = seq (2,n)
используется для инициализации вектора до n
который затем зацикливается.
Цикл проверяет, присутствует ли значение в векторе s
определено ранее с помощью Любые функция. И если он совпадает, он добавляет это значение к основному вектору и обновляет вектор для проверки, т.е. s
со всеми числами, которые не делятся с текущим i
В конце цикла, p
вектор содержит все простые числа.
использованная литература
Спасибо за чтение. В следующей статье я расскажу о сюжетные функции . Кроме того, некоторые представления о пакеты & наборы данных.
Также, если вы не читали часть 1. Вы можете прочитать ее здесь.
Оставьте свои вопросы ниже. Предложения приветствуются. 🙌