많은 수의 반복에 대해 시뮬레이션 기능을 실행하는 프로그램이 있습니다. 그러나 나는 가장 쉬운 부분이 될 것으로 기대되는 것에 매달 렸습니다 : 함수 결과의 빈도 수를 저장하는 방법을 알아 냈습니다.시뮬레이션 함수의 빈도수 저장 R
시뮬레이션 기능 자체는 복잡하지만 R의 sample()
기능과 유사합니다. 많은 양의 데이터가 입력되고이 함수는 요소의 하위 집합을 포함하는 벡터를 출력합니다.
x <- c("red", "blue", "yellow", "orange", "green", "black", "white", "pink")
run_simulation <- function(input_data, iterations = 100){
for (i in 1:iterations){
result <- sample(input_data, 3, replace=FALSE)
results <- ????
}
}
run_simulation(x)
내 질문은 시뮬레이션 루프 내부의 함수의 결과의 주파수 카운트를 저장하는 가장 좋은 (가장 효율적이고 R-같은) 데이터 구조가 무엇인지입니다. , 거기 그러나
counts[results_tuple] = counts.get(results_tuple, 0) + 1
: 당신이 for
루프에서 말할 수있을 때, 나의 배경은 내가 특정 조합이 출력 될 때마다 증가 튜플에 의해 키가 사전인가를 만들 것입니다 파이썬, 같은 언어에 R에 상응하는 dict/hashmap 타입 구조가 없으며, R에서 다른 언어를 에뮬레이션하려고하면 추악하고 비효율적 인 코드를 만드는 방법이라는 것을 자주 발견했습니다. (지금은 출력 벡터를 문자열로 변환하고 나중에 숫자가 table()
인 결과 목록에 추가했지만 가능한 출력 벡터의 수가 제한된 함수에 비해 반복 횟수가 많으면 메모리가 비효율적입니다. .
Result Freq
black, pink, green 8
blue, red, white 7
black, pink, blue 7
blue, green, black 5
blue, green, red 4
green, blue, white 3
pink, green, white 3
white, blue, green 1
white, orange, red 1
yellow, black, orange 1
yellow, blue, green 1
내가 어떤 특정 요소의 주파수 만 세트에 대해 걱정하지 않는다 :)
것은 명확하게하기 위해, 여기에 내가 원하는 출력의 종류이다. 그리고 나는 출력의 순서에 관심이 없다. 단지 주파수이다.
아무쪼록 감사드립니다.
답변을 게시하면 즉시 귀하의 설명에 있음을 알 수 있습니다. 너무 독창적이지 않다! 그리고, 게시물을 더 자세히 읽어야합니다 ... 어쨌든, 응답이 삭제되었습니다. 내가 원래의 방법으로 올 경우 다시 게시됩니다. – ddiez