R에서 서로 다른 평균 및 Sd 값을 사용하여 많은 관측치에 대한 Rnorm 시뮬레이션
이 기사에서는 R에서 서로 다른평균및sd
값을 사용하여 많은 관측치에 대해rnorm
을 시뮬레이션하는 여러 방법을 보여줍니다.
Map
함수를 사용하여 R의 많은 관측치에 대해rnorm
시뮬레이션
rnorm
함수는 기본평균이0
이고 표준 편차 (sd
)가1
인 경우 정규 분포에 대한 임의 편차를 생성하는 데 사용됩니다. 후자의 매개 변수는 요소의 벡터로 선택적으로 전달할 수 있습니다. 이 경우 사전 정의 된평균및sd
값을 데이터 프레임의 일부로 저장했습니다. Map
함수는 주어진 함수 객체를 여러 벡터의 해당 요소에 적용합니다. 함수 객체를 첫 번째 인수로 사용하고 벡터 객체를 다음 인수로 사용합니다. 벡터 객체의 수는 주어진 함수 객체의 필수 매개 변수와 같아야합니다. 다음 예에서는 각data
요소에 대해5
편차를 생성합니다. 또한set.seed
함수를 사용하여 여러 프로그램 실행간에 재현 가능한 결과에 대한 시드 값을 지정합니다. Map
함수는list
객체를 반환합니다.
set.seed(123)
df1 <- data.frame(
data = sample(1:64, 4),
mean = sample(1:64, 4),
sd = c(1, 4, 8, 20)
)
n <- 5
func1 <- function(x, y) rnorm(n, mean = x, sd = y)
list1 <- Map(func1, df1$mean, df1$sd)
list1
출력:
[[1]]
[1] 3.129288 4.715065 3.460916 1.734939 2.313147
[[2]]
[1] 40.21735 46.89633 43.43926 43.60309 42.44273
[[3]]
[1] 45.55327 64.29531 53.98280 34.26706 55.61085
[[4]]
[1] 44.54417 32.64353 49.64050 33.47991 39.42218
apply
함수를 사용하여 R의 많은 관측치에 대해rnorm
시뮬레이션
또는apply
함수를 사용하여 데이터 프레임의 다른 행에 대해rnorm
을 시뮬레이션 할 수 있습니다. apply
함수는 일반적으로 지정된 함수 객체를 배열 또는 행렬의 지정된 여백에 적용하여 값을 반환하는 데 사용됩니다. 여백은MARGIN
이라는 두 번째 매개 변수를 사용하여 지정됩니다. MARGIN
인수는 행렬의 행에 적용될 함수를 나타내는1
값을 가질 수 있습니다. 반면2
값은 행렬의 열을 나타내고c(1,2)
는 행렬의 행과 열을 모두 나타냅니다. apply
함수의 첫 번째 인수는 배열 또는 행렬 일 수 있습니다. 그러나 전달 된 객체가 배열이 아닌 경우as.matrix
또는as.array
함수를 사용하여 배열 유형으로 강제 변환됩니다.
set.seed(123)
df1 <- data.frame(
data = sample(1:64, 4),
mean = sample(1:64, 4),
sd = c(1, 4, 8, 20)
)
n <- 5
func1 <- function(x) rnorm(n, mean = x[1], sd = x[2])
apply(df1[-1], 1, FUN = func1)
출력:
[,1] [,2] [,3] [,4]
[1,] 3.129288 40.21735 45.55327 44.54417
[2,] 4.715065 46.89633 64.29531 32.64353
[3,] 3.460916 43.43926 53.98280 49.64050
[4,] 1.734939 43.60309 34.26706 33.47991
[5,] 2.313147 42.44273 55.61085 39.42218
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