R의 중첩 for 루프

Jinku Hu 2023년1월30일
  1. R 언어의for 루프
  2. 중첩 된for루프를 사용하여 R의 행렬 요소 반복
R의 중첩 for 루프

이 기사에서는 R에서 중첩 된for루프를 소개합니다.

R 언어의for 루프

for루프는 대부분의 프로그래밍 언어에서와 유사한 휴리스틱을 사용하여 R 언어로 사용할 수 있습니다. 주어진 코드 블록을 여러 번 반복합니다. for루프 구문은 다음과 같습니다.

for (item in set) {}

itemset에서 반복 된 요소를 저장하는 객체입니다. for루프는 출력을 반환하지 않으므로 각 반복에서 ‘word’값을 출력하려면 ‘print’함수를 호출해야합니다.

vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
           "spades", "ten", "spades")

for (word in vec1) {
  print(word)
}

출력:

[1] "ace"
[1] "spades"
[1] "king"
[1] "spades"
[1] "queen"
[1] "spades"
[1] "jack"
[1] "spades"
[1] "ten"
[1] "spades"

인덱스가 변수로 노출되는for루프를 구현할 수도 있습니다. 이 경우length함수를 사용하여vec1벡터의 크기를 계산하고 첫 번째 요소에서 끝까지 반복합니다. 1:표기법이 중요하며 범위의 시작을 지정합니다. 다음 예제 코드는for루프를 사용하여 동일한 크기의 다른 벡터에 복사 된 string 형 벡터를 생성합니다.

vec1 <- c("ace", "spades", "king", "spades", "queen", "spades", "jack",
           "spades", "ten", "spades")

vec2 <- vector(length = length(vec1))

for (i in 1:length(vec1)) {
  vec2[i] <- vec1[i]
}
vec2

출력:

[1] "ace"    "spades" "king"   "spades" "queen"  "spades" "jack"   "spades" "ten"   
[10] "spades"

중첩 된for루프를 사용하여 R의 행렬 요소 반복

중첩 루프는for루프 구조를 사용하여 구현할 수 있습니다. 이것은 행렬 요소를 반복하고 임의의 값으로 초기화하는 데 사용할 수 있습니다. 일반 표기법은 범위의 끝이nrowncol함수를 사용하여 계산된다는 점을 제외하면 이전 예와 동일합니다. nrowncol은 각각 배열의 행 또는 열 수를 반환합니다.

mat1 <- matrix(0, nrow = 5, ncol = 5)
for (i in 1:nrow(mat1)) {
  for (j in 1:ncol(mat1)) {
    mat1[i, j] <- sample(1:100, 1, replace=TRUE)
  }
}
mat1

출력:

[,1] [,2] [,3] [,4] [,5]
[1,]   13   14   13   67   98
[2,]   28   50   23   55    9
[3,]    3   65   99   17   93
[4,]   18    6   20   50   46
[5,]   51   76   33   26    3

그러나 중첩 루프 구조는 이전 예제 코드에서 잘 작동합니다. 다음 스 니펫에 표시된대로matrix함수의 첫 번째 인수로 직접 연결된sample함수를 사용하면 행렬 초기화가 더 잘 수행됩니다.

mat2 <- matrix(sample(1:100, 25, replace = TRUE), ncol = 5)
mat2

출력:

[,1] [,2] [,3] [,4] [,5]
[1,]   85   19   26   53   88
[2,]   44   50   66   96   56
[3,]   42   46   37   19   66
[4,]   43   23   13   32   67
[5,]   56   51   21    2   56
작가: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.

LinkedIn Facebook

관련 문장 - R Loop