R의 내 지식 (아마도 무지한)은 메모리의 객체를 임시로 복사한다는 것입니다. 전역 환경의 객체가 너무 커서 복사 할 수있는 경우에도 함수를 사용하여 코드를 단순화하는 방법은 무엇입니까? 또는 함수를 조작하기 위해 큰 개체의 필요한 부분 만 하위 집합으로 만드는 것이 좋습니다.r 함수가 객체의 복사본이 아닌 전역 환경에서 객체를 사용하도록 요구하십시오.
예
# load two objects with 10 million rows and 500 columns
big.object.1 <- readRDS(file = "previously.created.dataframe.1")
big.object.2 <- readRDS(file = "previously.created.dataframe.2")
# method 1 with memory use of ~xMB?
big.object.1$recoded.column <- ifelse(big.object.1$old.column > 0,
big.object.1$recoded.column * 2,
big.object.1$recoded.column * 0.5)
# method 2 with memory use of ~2xMB?
new.column_function <- function(data, old.col, recoded.col) {
data[recoded.col] <- ifelse(data[old.col] > 0,
data[recoded.col] * 2,
data[recoded.col] * 0.5)
}
new.column_function(data = big.object.1,
recoded.col = 400,
new.col = 401)
코드가 기능하지 않고 복잡하지만, 메모리 기능 문제입니다 가장 좋은 방법은 무엇입니까? 큰 개체를 복사하지 않으려면 어떻게해야합니까?
메모리가 당신의 data.frame.' : = '에 문제가있을 때'data.table'을 시도해 볼 수 있으며, 열의 하위 집합을 참조로 빠르게 추가, 제거 및 업데이트 할 수 있습니다. – myincas
@ incas56, 대답으로 간단한 예를 들려 줄 수 있습니까? 어쩌면 data.table을 data.table로 변환 한 다음 위에서 지정한대로 data.table을 조작합니까? 감사. – jtd