행렬 인덱싱
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챌린지
쉬움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")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 R 컴파일러