행렬 연산
Coddy R 여정의 논리와 흐름 섹션에 포함된 레슨. 64개 중 20번째.
행렬과 숫자 사이 또는 같은 크기의 두 행렬 사이의 산술 연산은 셀별로 수행됩니다:
a <- matrix(1:4, nrow = 2, byrow = TRUE)
b <- matrix(c(10, 20, 30, 40), nrow = 2, byrow = TRUE)
print(a * 2)
print(a + b)출력:
[,1] [,2]
[1,] 2 4
[2,] 6 8
[,1] [,2]
[1,] 11 22
[2,] 33 44비교는 셀 단위로도 작동하며 논리 행렬을 반환합니다. 이를 사용하여 셀의 개수를 세거나, 일치하는 셀만 변경하는 인덱스로 사용할 수 있습니다:
m <- matrix(c(4, 12, 7, 15), nrow = 2, byrow = TRUE)
print(sum(m > 10))
m[m > 10] <- 10
print(m)출력:
[1] 2
[,1] [,2]
[1,] 4 10
[2,] 7 10t(m)은 행과 열을 바꿉니다. %*%는 행렬 곱이며, 각 결과 셀은 첫 번째 행렬의 한 행과 두 번째 행렬의 한 열을 결합하므로 ncol(a)는 nrow(b)와 같아야 합니다:
a <- matrix(1:4, nrow = 2, byrow = TRUE)
print(t(a))
print(a %*% a)출력:
[,1] [,2]
[1,] 1 3
[2,] 2 4
[,1] [,2]
[1,] 7 10
[2,] 15 22크기가 서로 다른 행렬 간의 셀별 산술 연산은 non-conformable arrays 오류와 함께 중단되므로, 먼저 dim()을 비교하세요. 행렬 곱에는 고유한 크기 규칙이 있습니다:
a <- matrix(1:4, nrow = 2)
b <- matrix(1:6, nrow = 2)
print(identical(dim(a), dim(b)))
print(dim(a %*% b))출력:
[1] FALSE
[1] 2 3챌린지
쉬움cap_values(m, limit)를 완성하세요. 두 줄을 반환합니다. limit보다 큰 셀의 개수와 함께 Over: 를 출력하고, 그다음 모든 limit 초과 값이 limit로 대체된 후 행렬의 합과 함께 Total: 을 출력합니다.
제공된 코드는 한 줄에서 행렬을 읽습니다. 행은 ;로 구분되고 행의 값은 ,로 구분되므로, 1,2;3,4는 1 2와 3 4 행을 가진 행렬입니다. 다음 줄에는 limit이 들어 있습니다. 코드는 반환된 각 줄을 출력합니다.
직접 해보기
cap_values <- function(m, limit) {
# 여기에 코드를 작성하세요
c("Over: 0", "Total: 0")
}
# 제공된 입력/출력 코드: 그대로 유지하세요
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(cap_values(parse_matrix(input[1]), as.numeric(input[2])), sep = "\n")
이 레슨에는 짧은 퀴즈가 포함되어 있습니다. 레슨을 시작해 문제를 풀고 진행 상황을 기록하세요.
논리와 흐름의 모든 레슨
직접 연습해 보세요: 온라인 R 컴파일러