For-Loop в R DataFrame

For Loop V R Dataframe



Цикл for — это управляющая структура, которая позволяет нам повторять набор инструкций заданное количество раз. Это широко используемый метод итерации в R, особенно когда нам нужно выполнить одну и ту же операцию с некоторыми элементами или выполнить итерацию по структуре данных, например, в DataFrame. Строки и столбцы составляют кадры данных в R, где каждая строка представляет одно наблюдение, а каждый столбец обозначает переменную или аспект этого наблюдения.

В этой конкретной статье мы используем цикл for для перебора DataFrame в различных подходах. Имейте в виду, что итерация цикла for по строкам и столбцам может потребовать больших вычислительных ресурсов для больших фреймов данных.







Пример 1. Использование цикла For по строкам DataFrame в R

Цикл for в R можно использовать для перебора строк DataFrame. Внутри цикла for мы можем использовать индекс строки для доступа к каждой строке DataFrame. Давайте рассмотрим следующий код R, который является демонстрацией цикла for для перебора строк указанного DataFrame.



данные = данные.кадр (с1 = с (1: 5),

с2 = с(6:10),

с3 = с(11:15))

для (я в 1: nrow (данные)) {

строка <- данные[i,]

печать (строка)

}

Здесь мы сначала определяем функцию data.frame() внутри «данных». Функция data.frame() здесь содержит три столбца. Каждый столбец задается последовательностью чисел от 1 до 5, от 6 до 10 и от 11 до 15 соответственно. После этого развертывается функция цикла for, которая перебирает строки «данных» DataFrame с помощью функции nrow(), чтобы получить общее количество строк. Переменная цикла «i» принимает значения для всего количества строк в «данных».



Затем мы извлекаем i-ю строку «данных» DataFrame, используя обозначение квадратных скобок «[]». Извлеченная строка сохраняется в переменной row, которая будет напечатана функцией print().





Следовательно, цикл перебирает все строки в DataFrame и отображает номера строк в выходных данных вместе со значениями столбца.



Пример 2: Использование цикла For для столбцов DataFrame

Точно так же мы можем использовать цикл for в R для перебора столбцов указанного фрейма данных. Мы можем использовать предыдущий код для перебора столбцов, но мы должны использовать функцию ncol() в цикле for. И наоборот, у нас есть самый простой подход к перебору столбцов DataFrame с использованием цикла for. Рассмотрим следующий код R для этого:

df = data.frame(col1 = c(10, 20, 30, 40, 50),

столбец2 = с(11, 21, 31, 41, 51),

столбец3 = с(12, 22, 32, 42, 52))

for (столбец в именах столбцов (df)) {

столбец <- df[[col]]

печать (столбец)

}

Здесь мы сначала создаем переменную df, в которой используется data.frame() со вставкой столбцов. DataFrame «df» содержит три столбца, содержащие числовые значения. Затем мы используем цикл for для перебора имен столбцов DataFrame «данных» с помощью функции colnames(). На каждой итерации переменная цикла «col» принимает имя текущего столбца. Извлеченный столбец затем сохраняется в новой переменной, которая называется «столбец».

Таким образом, данные переменной «column» выводят вывод на следующую консоль:

Пример 3: Использование цикла For для всего фрейма данных

В предыдущих примерах мы перебирали столбцы и строки, используя цикл for соответственно. Теперь мы используем вложенные циклы for для одновременного перебора строк и столбцов DataFrame. Код R представлен ниже, где вложенный цикл for используется для столбцов и строк:

сотрудники <- data.frame(id=1:4,

имена=c('Ким', 'Джон', 'Иэн', 'Марк'),

location=c('Австралия', 'Америка', 'Канада', 'Иордания'),

зарплата=с(2000, 1800, 1500, 1000))

for (строка в 1:nrow(сотрудники)) {

for (столбец в 1:ncol(сотрудники)) {

print(paste('Индекс строки', строка, 'имя столбца', столбец, 'значение ячейки', сотрудники[строка, столбец]))

}

}

Здесь мы объявляем переменную «сотрудники», где вызывается data.frame() для установки столбцов. Значения в каждом столбце задаются с помощью векторов. Затем для строки и столбца DataFrame «сотрудников» мы используем два вложенных цикла for для перебора данных. Внешний цикл перебирает строки указанного DataFrame, используя «1:nrow(employees)». Для каждой строки во внутреннем цикле используется «1:ncol(employees)» для многократного перебора столбцов DataFrame.

После этого у нас есть функция print() внутри вложенных циклов, которая развертывает функцию paste() для объединения индекса строки, индекса столбца и значения ячейки в одну строку. Выражение сотрудника [строка, столбец] здесь получает значение в текущей ячейке, где строка и столбец — это существующие индексы строки и столбца соответственно.

Таким образом, вывод на консоль извлекается с объединенными индексом строки, индексом столбца и значением ячейки в одну строку.

Пример 4: альтернативный метод цикла for в R

Цикл for теперь устарел в языке R. Однако он предоставляет несколько альтернативных методов, которые работают так же, как цикл for, и быстрее, чем циклы for. Этот метод относится к функциям семейства «apply», которые запускаются в цикле for в фоновом режиме для перебора DataFrames. Давайте рассмотрим следующий код R, в котором функция sapply() используется для циклического обхода DataFrame.

dfX <- data.frame(var1=c(1:5),

переменная2=с(6:10),

переменная3=с(11:15),

переменная4=с(16:20))

dfX

sapply (dfX, сумма)

Здесь мы сначала устанавливаем DataFrame «dfX», вызывая функцию data.frame() с двумя столбцами, каждый из которых содержит числовые значения. Затем мы печатаем исходный кадр данных «dfX» на консоль. На следующем шаге мы используем функцию sapply() для перебора предоставленного DataFrame и получения суммы каждого столбца. Функция sapply() обычно принимает аргументы «x» и «FUN». В этом случае X — это DataFrame «dfX», а «FUN» — это функция sum(), которая применяется к каждому из столбцов DataFrame.

Результат итерации, достигнутой с помощью функции sapply(), показан на следующем экране. Результаты операции суммирования DataFrame показаны для каждого столбца. Более того, мы также можем использовать некоторые другие функции «семейства Apply» для операции цикла for в R:

Заключение

Мы работаем с циклами for для перебора строк или столбцов DataFrame для выполнения определенной операции. Цикл for используется индивидуально для перебора столбцов и строк. Кроме того, мы используем это для итерации по столбцам и строкам фрейма данных одновременно. В большинстве случаев применение функций для получения желаемого результата более эффективно. Пример применения функции приведен в последнем примере над операцией цикла for.