Файл: Методическое пособие язык программирования к ф. м н., доцент Мусин Наиль Минбариевич Новомосковск 2015 содержание mind Map 3 Начало работы 5.doc
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 06.12.2023
Просмотров: 64
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Функции пользователя
Пример таких функций:
Векторы, их сложение и вычитание. Скалярное произведение
Отбор элементов вектора. Сортировка
Пример: пусть в вектор занесены возрасты сотрудников по мере их поступления на работу. Требуется сделать выборку сотрудников возраста от 30 до 35 лет:
Очевидно, что можно формировать сложные запросы с помощью логических операторов:
"Равно" == | "Больше либо равно" >= |
"Не равно" != | "Логическое И" & |
"Меньше" < | "Логическое ИЛИ" | |
"Больше" > | "Логическое НЕ" ! |
"Меньше либо равно" <= | |
Сортировать элементы вектора можно следующим образом:
Матрицы
Матрицы создаются из векторов следующим образом:
Как видим, элементы вектора выписываются сверху вниз по столбцам. Чтобы элементы выписывались слева направо по строкам, следует это указать следующим образом:
Отсортированную матрицу можно сохранить на жёсткий диск:
Сложение. Умножение
Действия над строками и столбцами
Соединяем вместе строки и столбцы матриц М и В в одну матрицу:
Определитель
Обратная матрица
СЛАУ
Не знающий, что такое СЛАУ – да не читает этот пункт.
Проверим полученное решение:
Списки. Функция list()
Векторы можно объединить в так называемые списки с помощью функции list(), при этом векторы могут быть разных типов и разной длины.
Таблицы (фреймы). Функция frame()
Таблица в R аналогична таблицам программы Excel и ей подобных табличных процессоров: столбцы, то есть векторы, могут состоять из ячеек различных форматов (типов), но должны состоять из одинакового количества элементов. Таблица в R – частный случай списка.
Работа с файлами
До сих пор данные в R вводились с клавиатуры. Однако данные можно набирать сначала в текстовом редакторе Блокнот , а потом считывать данные из соответствующего файла. Эта возможность есть во всех языках программирования, но в R этот процесс реализован намного проще, красивее и изящнее - скорее всего потому, что язык R работает на текстовом коде, и нет здесь никаких fopen, fclose.
Блокнот
Допустим, наши данные располагаются в трёх столбцах x, y и z.
Заходим в рабочую папку среды R и в Блокноте набираем через пробел имена столбцов, например, январь, февраль, март. Они составляют заголовок (head).
Во второй и последующих строках набираем данные, отделяя их пробелом. Пусть получилось следующее:
январь февраль март
0.2 189 198.7
0.6 102 106.9
1.0 84 57.5
1.4 37 30.9
1.8 9 16.6
2.2 2 9.0
2.6 3 4.8
3.0 1 2.6
3.4 2 1.4
3.8 0 0.7
Сохраним данные в файле data.txt.
Запускаем среду R и в рабочем окне набираем команду
данные = read.table(“data.txt”, head = TRUE) :
Как видим, заголовок надо включать опцией head = TRUE.
Для того, чтобы со столбцами можно было обращаться как с отдельными объектами, следует их имена включить в пространство имён командой attach(данные). Тогда можно будет, например, покомпонентно сложить все три столбца:
Мы также можем просуммировать числа отдельно по столбцам, а можно и все числа в таблице:
Можно подсчитать средние значения:
Excel
Часто данные бывают сохранены в формате Excel. Например:
Следует сохранить его в формате .txt, но таких форматов Excel предлагает несколько. Следует выбрать Текст Юникод (*.txt) и сохранить, например, в файл по имени data.txt:
Открыв в Блокноте файл data.txt, видим:
В Excel употребляется десятичная ЗАПЯТАЯ, в то время как в R употребляется десятичная ТОЧКА, поэтому следует произвести соответствующую замену:
| |
Полученный файл data.txt следует переместить в рабочую папку среды R.
Программирование
for, while, векторизация
Про циклы for, while далее не будет ни слова (справку можно легко получить в среде R), ибо без них в R можно вообще обойтись за счёт так называемой векторизации вычислений. Это означает, что можно выполнить некоторые операции сразу над всеми элементами вектора, матрицы:
Более сложный пример:
На практике этого бывает достаточно.
Вот типичный пример решения задач с применением for:
Задача. Вычислить
Вот решение в Паскале:
Var S, X, Pr : Real; N, I : Integer;
Begin
Write('Введите число слагаемых и x: '); ReadLn(N, X);
Pr := 1;
S := 0;
For I := 1 To N Do
Begin
Pr := Pr * Sin(X);
S := S + Pr
End;
WriteLn('Сумма равна ', S : 7 : 4)
End.
А вот решение в R: