R에는 자신을 코딩 할 필요가없는 스택이 있습니까?R의 스택 클래스 - 좀 더 간결한
는 말 그대로, 난 그냥 아래의 코드를 쓴 바로 CS (102)
에서 뭔가를 원하고, 그것을 잘 작동합니다. 그러나 나는 차라리 보편적이고 입증 된 다른 것을 가지고 싶습니다.
언어에 뭔가가 있습니까? 또는 대기열, 나무 등과 같은 모든 일반적인 알고리즘의 일부 패키지는 무엇입니까?
####################################################################################################
# Stack.R - Implments a generalized stack. Uses Reference Classes since we need mutability.
####################################################################################################
Stack <- setRefClass("Stack",
fields = list(
vStack = "vector",
nTop = "numeric"
),
methods = list(
initialize = function() {
nTop <<- 1
},
push = function(nItem) {
vStack <<- c(vStack, nItem)
nTop <<- nTop + 1
vStack[nTop-1]
},
pop = function() {
if (nTop == 1) return(NULL)
nItem <- vStack[nTop-1]
nTop <<- nTop - 1
vStack <<- vStack[1:nTop-1]
nItem
},
top = function() {
vStack[nTop-1]
}
)
)
# StackTest <- function() {
#
# say("Starting...")
# s <- Stack()
# say(s$push(1), " {push}")
# say(s$push("Hello"), " {push}")
# say(s$push(2), " {push}")
# say(s$push("World"), " {push}")
# say(s$push(3), " {push}")
# say(s$top(), " {top}")
# say(s$top(), " {top}")
# say(s$pop(), " {pop}")
# say(s$pop(), " {pop}")
# say(s$pop(), " {pop}")
# say(s$pop(), " {pop}")
# say("Finished.")
#
# }
#
# StackTest()
실제로 무엇을하고 싶습니까? 스택을 만드는 것은 기본 벡터화 된'R' 연산자와 함수로 더 쉽게 달성 할 수없는 것이있을 때만 유용합니다. –
의도를 물어 보는 것이 좋습니다! 여기 핵심 데이터 처리를하려고하지 않습니다. 프로그램 동작을 추적하는 방법에 대해 자세히 알아보십시오. 시간과 같은 체크 포인트를 갖고 싶기 때문에 시작과 종료 시점을 알 수 있습니다. 콜 깊이에 대한 가정이 없으며, 목표를 높이기를 원합니다. 따라서 디버깅 추적과 같이 지나치게 길어서는 안됩니다. .그래서 나는 함수의 상단과 하단에서 호출하도록하고, 스택은 메소드 이름과 시스템 시간을 스택에 둔다. 완료되면 팝업합니다. –
글쎄, 당신은 그것을하기 위해'proc.time'과'system.time' 호출을 삽입 할 수 있습니다. –