For-Loop trong R DataFrame

For Loop Trong R Dataframe



Vòng lặp for là một cấu trúc điều khiển cho phép chúng ta lặp lại một tập hợp các lệnh trong một số lần xác định. Đây là một phương pháp thường được sử dụng để lặp lại trong R, đặc biệt là khi chúng ta cần thực hiện thao tác tương tự trên một số phần tử hoặc lặp qua cấu trúc dữ liệu, chẳng hạn như trong DataFrame. Hàng và cột tạo nên DataFrames trong R trong đó mỗi hàng đại diện cho một quan sát và mỗi cột biểu thị một biến hoặc khía cạnh của quan sát đó.

Với bài viết cụ thể này, chúng tôi sử dụng vòng lặp for để lặp qua DataFrame theo các cách tiếp cận khác nhau. Xin lưu ý rằng phép lặp vòng lặp for trên các hàng và cột có thể mang tính tính toán cao đối với các Khung dữ liệu lớn.







Ví dụ 1: Sử dụng For-Loop Over DataFrame Rows trong R

Vòng lặp for trong R có thể được sử dụng để lặp qua các hàng của DataFrame. Bên trong vòng lặp for, chúng ta có thể sử dụng chỉ mục hàng để truy cập từng hàng của DataFrame. Hãy xem xét đoạn mã R sau đây, đây là phần minh họa vòng lặp for để lặp qua các hàng của DataFrame đã chỉ định.



dữ liệu = data.frame(c1 = c(1:5),

c2 = c(6:10),

c3 = c(11:15))

for(i in 1:nrow(data)) {

hàng <- dữ liệu[i, ]

in (hàng)

}

Ở đây, trước tiên chúng ta định nghĩa hàm data.frame() bên trong “data”. Hàm data.frame() ở đây chứa ba cột. Mỗi cột được thiết lập với một dãy số tương ứng từ 1 đến 5, 6 đến 10 và 11 đến 15. Sau đó, hàm for-loop được triển khai để lặp qua các hàng của “dữ liệu” DataFrame bằng cách sử dụng hàm nrow() để lấy tổng số hàng. Biến vòng lặp, “i”, nhận các giá trị cho toàn bộ số hàng trong “dữ liệu”.



Sau đó, chúng tôi trích xuất hàng thứ i của “dữ liệu” DataFrame bằng ký hiệu dấu ngoặc vuông “[ ]”. Hàng được trích xuất được lưu trữ trong biến “hàng” sẽ được in bằng hàm print().





Do đó, vòng lặp lặp lại trên tất cả các hàng trong DataFrame và hiển thị số hàng ở đầu ra cùng với các giá trị của cột.



Ví dụ 2: Sử dụng các cột For-Loop trên DataFrame

Tương tự, chúng ta có thể sử dụng vòng lặp for trong R để lặp qua các cột của khung dữ liệu đã chỉ định. Chúng ta có thể sử dụng mã trước đó để lặp qua các cột nhưng chúng ta phải sử dụng hàm ncol() trong vòng lặp for. Ngược lại, chúng ta có cách tiếp cận đơn giản nhất để lặp qua các cột của DataFrame bằng cách sử dụng vòng lặp for. Hãy xem xét mã R sau đây cho việc này:

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

col2 = c(11, 21, 31, 41, 51),

col3 = c(12, 22, 32, 42, 52))

for(col in colnames(df)) {

cột <- df[[col]]

in (cột)

}

Ở đây, trước tiên chúng ta tạo biến df trong đó data.frame() được sử dụng với việc chèn cột. Khung dữ liệu “df” chứa ba cột chứa các giá trị số. Tiếp theo, chúng tôi sử dụng vòng lặp for để lặp lại các tên cột của DataFrame “dữ liệu” bằng cách sử dụng hàm colnames(). Trong mỗi lần lặp, biến vòng lặp “col” lấy tên của cột hiện tại. Cột được trích xuất sau đó được lưu trữ trong một biến mới là “cột”.

Do đó, dữ liệu của biến 'cột' in đầu ra trên bảng điều khiển sau:

Ví dụ 3: Sử dụng Vòng lặp For trên Toàn bộ Khung dữ liệu

Trong các ví dụ trước, chúng ta lặp lần lượt qua các cột và hàng bằng cách sử dụng vòng lặp for. Bây giờ, chúng tôi sử dụng các vòng lặp for lồng nhau để lặp lại đồng thời trên cả hàng và cột của DataFrame. Mã của R được cung cấp dưới đây khi vòng lặp for lồng nhau được sử dụng trên các cột và hàng:

nhân viên <- data.frame(id=1:4,

tên=c('kim', 'John', 'Ian', 'Mark'),

location=c('Úc', 'Mỹ', 'Canada', 'Jordan'),

lương=c(2000, 1800, 1500, 1000))

for (row in 1:nrow(employees)) {

for (col in 1:ncol(employees)) {

print(dán('Chỉ mục hàng', hàng, 'tên cột', col, 'giá trị ô', nhân viên[hàng, col]))

}

}

Ở đây, chúng ta khai báo biến “employees” trong đó data.frame() được gọi để thiết lập các cột. Các giá trị trong mỗi cột được chỉ định bằng cách sử dụng vectơ. Sau đó, đối với hàng và cột của Khung dữ liệu “nhân viên”, chúng tôi sử dụng hai vòng lặp lồng nhau để lặp lại dữ liệu. Vòng lặp bên ngoài lặp qua các hàng của DataFrame đã chỉ định bằng cách sử dụng “1:nrow(employees)”. Đối với mỗi hàng, “1:ncol(employees)” được sử dụng trong vòng lặp bên trong để lặp lại nhiều lần trên các cột của DataFrame.

Sau đó, chúng ta có một hàm print() bên trong các vòng lặp lồng nhau, hàm này triển khai hàm paste() để nối chỉ mục hàng, chỉ mục cột và giá trị ô thành một chuỗi. Biểu thức employee [row, col] ở đây nhận giá trị trong ô hiện tại trong đó hàng và cột tương ứng là các chỉ số hàng và cột hiện có.

Do đó, đầu ra trên bàn điều khiển được truy xuất với chỉ mục hàng, chỉ mục cột và giá trị ô được nối vào một chuỗi duy nhất.

Ví dụ 4: Phương thức thay thế cho vòng lặp trong R

Vòng lặp for hiện đã lỗi thời trong ngôn ngữ R. Tuy nhiên, nó cung cấp một số phương thức thay thế hoạt động giống như vòng lặp for và nhanh hơn vòng lặp for. Phương pháp này là từ các hàm “áp dụng họ” chạy vòng lặp for trong nền để lặp qua DataFrames. Hãy xem xét mã R sau đây trong đó hàm sapply() được sử dụng để lặp qua DataFrame.

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

var2=c(6:10),

var3=c(11:15),

var4=c(16:20))

dfX

sapply(dfX, tổng)

Ở đây, trước tiên chúng ta thiết lập Khung dữ liệu “dfX” bằng cách gọi hàm data.frame() với hai cột, mỗi cột chứa các giá trị số. Sau đó, chúng tôi in Khung dữ liệu “dfX” ban đầu ra bảng điều khiển. Trong bước tiếp theo, chúng tôi sử dụng hàm sapply() để lặp lại DataFrame được cung cấp và lấy tổng của mỗi cột. Hàm sapply() nhận các đối số “x” và “FUN” nói chung. Trong trường hợp này, X là Khung dữ liệu “dfX” và “FUN” là hàm sum() được áp dụng cho từng cột của Khung dữ liệu.

Kết quả của phép lặp đạt được thông qua hàm sapply() sẽ xuất hiện trong màn hình sau. Kết quả của thao tác tổng của DataFrame được hiển thị cho từng cột. Hơn nữa, chúng ta cũng có thể sử dụng một số chức năng khác của “apply family” cho hoạt động của vòng lặp for trong R:

Phần kết luận

Chúng tôi làm việc với các vòng lặp for để lặp qua các hàng hoặc cột của DataFrame nhằm thực hiện một thao tác cụ thể. Vòng lặp for được sử dụng riêng lẻ để lặp qua các cột và hàng. Hơn nữa, chúng tôi sử dụng điều này để lặp lại trên cả cột và hàng của khung dữ liệu cùng một lúc. Hầu hết thời gian, áp dụng các chức năng để có được kết quả mong muốn sẽ hiệu quả hơn. Ví dụ về hàm áp dụng được đưa ra trong ví dụ cuối cùng về hoạt động của vòng lặp for.