반응형
함수를 제외한 모든 변수 제거
저는 R 콘솔에 다른 유형의 객체를 로드했습니다.다음을 사용하여 모두 제거할 수 있습니다.
rm(list=ls())
또는 변수가 아닌 함수만 제거합니다.
rm(list=lsf.str())
제 질문은: 함수를 제외한 모든 변수를 제거할 수 있는 방법이 있습니까?
함수를 제외한 모든 개체를 제거하는 원라이너는 다음과 같습니다.
rm(list = setdiff(ls(), lsf.str()))
그것은 사용합니다.setdiff글로벌 환경에서 개체의 하위 집합 찾기(에 의해 반환됨)ls()) 모드가 없는 경우function(에서 반환한 대로)lsf.str())
게시된 내용setdiff답이 좋습니다.방금 전에 제가 작성한 관련 기능을 게시하려고 생각했습니다.그것의 유용성은 독자에게 달려 있습니다 :-).
lstype<-function(type='closure'){
inlist<-ls(.GlobalEnv)
if (type=='function') type <-'closure'
typelist<-sapply(sapply(inlist,get),typeof)
return(names(typelist[typelist==type]))
}
다음 명령을 사용하여 모든 변수를 지울 수 있습니다.변수를 되돌릴 수 없으므로 주의하십시오.
rm(list=ls(all=TRUE))
여기 제가 어디선가 주워와서 조금 조정한 꽤 편리한 기능이 있습니다.디렉토리에 보관하는 것이 좋을 것 같습니다.
list.objects <- function(env = .GlobalEnv)
{
if(!is.environment(env)){
env <- deparse(substitute(env))
stop(sprintf('"%s" must be an environment', env))
}
obj.type <- function(x) class(get(x, envir = env))
foo <- sapply(ls(envir = env), obj.type)
object.name <- names(foo)
names(foo) <- seq(length(foo))
dd <- data.frame(CLASS = foo, OBJECT = object.name,
stringsAsFactors = FALSE)
dd[order(dd$CLASS),]
}
> x <- 1:5
> d <- data.frame(x)
> list.objects()
# CLASS OBJECT
# 1 data.frame d
# 2 function list.objects
# 3 integer x
> list.objects(env = x)
# Error in list.objects(env = x) : "x" must be an environment
현재 환경에서 기능을 제외한 모든 개체를 제거하기 위해 작성했습니다(사용되는 프로그래밍 언어는 IDER-Studio와 함께 R).
remove_list=c() # create a vector
for(i in 1:NROW(ls())){ # repeat over all objects in environment
if(class(get(ls()[i]))!="function"){ # if object is *not* a function
remove_list=c(remove_list,ls()[i]) # ..add to vector remove_list
}
}
rm(list=remove_list) # remove all objects named in remove_list
참고사항
rm(list=)의 "list" 인수는 문자 벡터여야 합니다.
현재 환경의 위치 i에 있는 개체의 이름은 ls()[i]에서 반환되고 개체 자체는 get(ls()[i]에서 반환됩니다.따라서 객체의 클래스가 클래스에서 반환됩니다(get(ls())[i]).
언급URL : https://stackoverflow.com/questions/8305754/remove-all-variables-except-functions
반응형
'programing' 카테고리의 다른 글
| 거래SQL에서 다른 트랜잭션을 실행합니다.SQL 스크립트 (0) | 2023.07.02 |
|---|---|
| Git master 브랜치를 분기된 저장소의 업스트림 브랜치로 재설정하려면 어떻게 해야 합니까? (0) | 2023.07.02 |
| .NET의 문자열에서 큰따옴표 제거 (0) | 2023.07.02 |
| springboot swagger3 "원격 구성을 로드하지 못했습니다." (0) | 2023.07.02 |
| 뷰가 스키마 바운드되지 않았으므로 'View_Table_Name' 뷰에 인덱스를 만들 수 없습니다. (0) | 2023.06.27 |