2016-05-05 5 views
0

混乱のタイトル、申し訳ありません、別のDFに含まれているDFの各変数のクラスのリストを印刷しようとしています。変数のDFリストに基づいてDFの各変数のクラスを読むR

DF1 I出力するにはどうすればよいの異なる種類(変数1、変数2、など)

(1列目のVariable1name、variable2name、variable3name、など)15個の変数の

DF2 =リスト

の= 50個の変数DF2の名前に基づいてDF1の変数のクラス?

私は、これはそれを行うだろうと思った:

class(DF1[,DF2[1,]]) 

Butit doesntの仕事。

DF2 [1、]は正しい名前を表示しますが、DF2の他のすべての名前をリストした18のレベルを持っていると言います...私はこの間違いを考えていますか?

目標は、因子変数である場合はDF1のすべての列を調べ、因子のレベルを変数に取得することです。より多くのコード

vartype=matrix(0,nrow=nrow(DF2),ncol=1) 
for (i in 1:nrow(DF2)) 
{ 
    temp=class(DF1[,DF2[i,]]) 
    if (temp=="Factor") 
    { 
    DF2[i]=1;  
    } 
} 

varmap=list(); 
length(varmap)=nrow(DF2); 
for (i in 1:nrow(DF2)) 
{ 
    if (DF2[i]=="factor") 
    { 
    varmap[[i]]=unique(DF1[,DF2[i]]) 
    } 
} 

一部のデータ:DF2はDF1

のデータ型

編集だろう、私はあなたが何をしたいと思います

DF1 <- data.frame(
    X = sample(1:10), 
    Y = sample(c("yes", "no"), 10, replace = TRUE) 
) 

str(Data) 
DF2=as.data.frame(c("X","Y")) 
+0

'DF2'はすべての列名を持つ最初の列を持っていると仮定して(OPの説明の' 1列目など 'に基づいて)' sapply(DF1 [as.character(DF2 [、1])]クラス) 。しかし、コードからは、最初の行のように見えます。その場合、 'sapply(DF1 [as.character(unlist(DF2 [1、]))]クラス)' – akrun

+0

シンプルな[再現可能な例](http://stackoverflow.com/questions/5963269/how make-a-great-r-reproducible-example)は、可能なソリューションをより簡単にテストすることができます。 – MrFlick

+0

さらにコードとデータを追加 –

答えて

0

を次のようになります。

sapply(DF1[, DF2[,1]], class)

これは最初のサブセットDF1がn DF2でamedし、 "class"関数を各列にマップします。sapplyはベクトルを返します。データセットの各列のクラスを取得するには、lapplyやforループのようなマッピング関数が必要です。たとえば、lapply(mtcars, classは、各列のクラスを提供します。

関連する問題