Menu
Coddy logo textTech

행렬 인덱싱

Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 18번째.

m[i, j]는 i행과 j열의 값입니다. 한쪽을 비워 두면 전체 행이나 열을 가져옵니다. m[i, ]는 i행이고 m[, j]는 j열입니다.

m <- matrix(1:6, nrow = 2, byrow = TRUE)
print(m[2, 3])
print(m[1, ])
print(m[, 2])

출력:

[1] 6
[1] 1 2 3
[1] 2 5

동일한 인덱스를 <-의 왼쪽에서도 사용할 수 있으므로 셀, 행 또는 열을 바꿀 수 있습니다:

m <- matrix(0, nrow = 2, ncol = 3)
m[1, 2] <- 5
m[2, ] <- c(7, 8, 9)
print(m)

출력:

     [,1] [,2] [,3]
[1,]    0    5    0
[2,]    7    8    9

행과 열에는 이름을 지정할 수 있으며, rownames()와 colnames()로 설정합니다. 그러면 이름을 인덱스로 사용할 수 있습니다:

sales <- matrix(c(3, 5, 2, 8), nrow = 2, byrow = TRUE)
rownames(sales) <- c("north", "south")
colnames(sales) <- c("jan", "feb")
print(sales["south", "feb"])
print(sales[, "jan"])

출력:

[1] 8
north south 
    3     2 

인덱스 벡터는 행과 열의 블록을 한 번에 선택합니다:

m <- matrix(1:9, nrow = 3, byrow = TRUE)
print(m[1:2, 2:3])
print(m[c(1, 3), 1])

출력:

     [,1] [,2]
[1,]    2    3
[2,]    5    6
[1] 1 7
challenge icon

챌린지

쉬움

cell_report(m, r, c)를 완성하세요. 세 줄을 반환하세요. Cell: 에는 행 r과 열 c의 값을, Row: 에는 행 r의 값들을, Column: 에는 열 c의 값들을 넣으세요. 값들은 하나의 공백으로 구분하세요.

제공된 코드는 한 줄에서 행렬을 읽습니다. 행은 ;로 구분하고 행의 값들은 ,로 구분하므로, 1,2;3,4는 행이 1 2와 3 4인 행렬입니다. 다음 두 줄에는 r과 c가 들어 있습니다. 코드는 반환된 각 줄을 출력합니다.

직접 해보기

cell_report <- function(m, r, c) {
  # 여기에 코드를 작성하세요
  c("Cell: ", "Row: ", "Column: ")
}

# 제공된 입력/출력 코드: 그대로 유지하세요
input <- suppressWarnings(readLines(file("stdin")))
parse_matrix <- function(line) {
  rows <- strsplit(line, ";")[[1]]
  matrix(as.numeric(unlist(strsplit(rows, ","))), nrow = length(rows), byrow = TRUE)
}
cat(cell_report(parse_matrix(input[1]), as.numeric(input[2]), as.numeric(input[3])), sep = "\n")
quiz icon실력 점검

이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.

논리와 흐름의 모든 레슨

직접 연습해 보세요: 온라인 R 컴파일러