130

Rでは、スクリプトの最後にあるグローバル変数のリストを取得して、それらを繰り返し処理したいと思います。これが私のコードです

#declare a few sample variables
a<-10
b<-"Hello world"
c<-data.frame()

#get all global variables in script and iterate over them
myGlobals<-objects()
for(i in myGlobals){
  print(typeof(i))     #prints 'character'
}

私の問題は、変数であり、文字変数ではない場合でも、typeof(i)常に返されることです。forループ内で元のタイプの変数を取得するにはどうすればよいですか?characterac

4

6 に答える 6

121

getによって返されるオブジェクトの文字名ではなく、値を取得するために使用する必要がありlsます。

x <- 1L
typeof(ls())
[1] "character"
typeof(get(ls()))
[1] "integer"

または、提示された問題については、次を使用することをお勧めしますeapply

eapply(.GlobalEnv,typeof)
$x
[1] "integer"

$a
[1] "double"

$b
[1] "character"

$c
[1] "list"
于 2012-10-02T16:06:21.073 に答える
1

基本的にあなたが望んでいたこととは逆のことをするように設計されています。これが私のツールキットのおもちゃの 1 つです。

 lstype<-function(type='closure'){
inlist<-ls(.GlobalEnv)
if (type=='function') type <-'closure'
typelist<-sapply(sapply(inlist,get),typeof)
return(names(typelist[typelist==type]))
}
于 2012-10-02T17:01:19.883 に答える