Chuyên đề 1: HDSD R để xử lý dữ liệu
Chương 2: CẤU TRÚC DỮ LIỆU TRONG R
0/1
Chương 3: HƯỚNG DẪN CÁCH CÀI PACKAGE
0/1
Chương 5: PACKAGE DATASET
0/1
Chương 7: VECTOR TRONG R
0/1
Chương 9: LOGICAL VECTOR
0/2
Chương 11: BÀI TẬP VỚI CHARACTER VECTOR
0/1
Chương 13: METACHARACTER VÀ ESCAPE CHARACTER
0/1
Chương 14: BIẾN YẾU TỐ – FACTOR TRONG R
0/1
Chương 15: CÁCH CHUYỂN ĐỔI CLASS TRONG R
0/1
Chương 19: CÁC PHÉP TÍNH TRÊN MATRIX
0/1
Chương 22: BÀI TẬP SUBSET
0/1
Chương 28: CÁC LỆNH TOÁN HỌC THƯỜNG DÙNG
0/1
Các lệnh subset data frame
Nội dung bài học

File script dataframe.R

https://tanduc307.github.io/tuhocr/code/dataframe.R

Trong bài CÁC LỆNH SUBSET DATA FRAME, phút 10:40 khi nói về lệnh rownames(df_2) == get_1 mình có phân tích nhầm một chút. Rất cảm ơn Mr. Thành Lương đã chỉ ra chỗ sai giúp mình.

Cụ thể mình nói dấu == là R sẽ search giá trị đầu tiên của get_1 rồi thực hiện so sánh, như vậy là không chính xác.

Cách giải thích chính xác là vector rownames(df_2) và vector get_1 sẽ được so sánh với nhau bằng toán tử ==, vì vector get_1 có 2 thành phần (không cùng chiều dài với vector rownames(df_2)) vì vậy sẽ có hiện tượng tái sử dụng lại (recycling) các giá trị của vector get_1 để tiếp tục so sánh với từng thành phần của trong vector rownames(df_2).

Các bạn chạy lại dòng lệnh sau để kiểm tra cơ chế của lệnh == nhé

> mtcars -> df_2
> get_1 <- c("Toyota Corona", "Datsun 710")
> rownames(df_2)
 [1] "Mazda RX4"           "Mazda RX4 Wag"       "Datsun 710"          "Hornet 4 Drive"      "Hornet Sportabout"  
 [6] "Valiant"             "Duster 360"          "Merc 240D"           "Merc 230"            "Merc 280"           
[11] "Merc 280C"           "Merc 450SE"          "Merc 450SL"          "Merc 450SLC"         "Cadillac Fleetwood" 
[16] "Lincoln Continental" "Chrysler Imperial"   "Fiat 128"            "Honda Civic"         "Toyota Corolla"     
[21] "Toyota Corona"       "Dodge Challenger"    "AMC Javelin"         "Camaro Z28"          "Pontiac Firebird"   
[26] "Fiat X1-9"           "Porsche 914-2"       "Lotus Europa"        "Ford Pantera L"      "Ferrari Dino"       
[31] "Maserati Bora"       "Volvo 142E"         
> rownames(df_2) == get_1 
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[21]  TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
> rownames(df_2) -> ok
> names(ok) <- rep(get_1, 16)
> ok
        Toyota Corona            Datsun 710         Toyota Corona            Datsun 710         Toyota Corona 
          "Mazda RX4"       "Mazda RX4 Wag"          "Datsun 710"      "Hornet 4 Drive"   "Hornet Sportabout" 
           Datsun 710         Toyota Corona            Datsun 710         Toyota Corona            Datsun 710 
            "Valiant"          "Duster 360"           "Merc 240D"            "Merc 230"            "Merc 280" 
        Toyota Corona            Datsun 710         Toyota Corona            Datsun 710         Toyota Corona 
          "Merc 280C"          "Merc 450SE"          "Merc 450SL"         "Merc 450SLC"  "Cadillac Fleetwood" 
           Datsun 710         Toyota Corona            Datsun 710         Toyota Corona            Datsun 710 
"Lincoln Continental"   "Chrysler Imperial"            "Fiat 128"         "Honda Civic"      "Toyota Corolla" 
        Toyota Corona            Datsun 710         Toyota Corona            Datsun 710         Toyota Corona 
      "Toyota Corona"    "Dodge Challenger"         "AMC Javelin"          "Camaro Z28"    "Pontiac Firebird" 
           Datsun 710         Toyota Corona            Datsun 710         Toyota Corona            Datsun 710 
          "Fiat X1-9"       "Porsche 914-2"        "Lotus Europa"      "Ford Pantera L"        "Ferrari Dino" 
        Toyota Corona            Datsun 710 
      "Maserati Bora"          "Volvo 142E"
0% Hoàn thành