2016-08-18 3 views
0

プログラミングの問題は、変数名である文字列のリストがAscii形式のファイル(variables.txtなど)にあることです。 variables.txtで名前を一致data.frameRでそれらの変数からテキストファイル(R)にリストされているdata.frameのすべての変数を選択する方法は?

A 
B 
C 
D 

を選択する必要があります。たとえば、次のように

dat[,var] 
    A B C D 
1 1 2 3 4 

続く

var = c("A", "B", "C", "D") 
(dat=data.frame(A=1,B=2,C=3,D=4,E=5,F=6)) 
    A B C D E F 
1 1 2 3 4 5 6 

だから、問題は多分varvariables.txtを読み込むに降りてきます。私が与えた場合:

var <- read.table("variables.txt") 

結果は再びdata.frameであり、サブ設定に使用することはできません。このタスクを完了するための最も効率的な方法は何ですか?

編集:私は

var <- as.vector(as.matrix(read.table("variables.txt"))) 

は、トリックを行うことが分かりました。しかし、おそらくより効率的な方法があります。

+2

'readLines( "variables.txtを")'試してみてください。 –

+0

'?scan'を試すことができます – akrun

+0

私の例では、' var'はサブ設定に使用できるベクトルです。 asciiファイルでは、変数名は行単位でリストされているので、1つの列を形成します(多くの行があるという意味で大きくなる可能性があります)。 – tomka

答えて

0

ここでvarはdata.frameのように入力しますが、この方法を試すことができます:あなたはサブセット化のためにそれを使用するために、ベクトルの参照に明示的に指定する必要があります。論理ベクトルと

dat<-data.frame(A=1,B=2,C=3,D=4,E=5,F=6) 

var<-data.frame(variable=c("A", "B", "C", "D")) 
dat[,names(dat) %in% var$variable] 
A B C D 
1 2 3 4 

サブセットが正常に動作します。あなたが順序を指定する必要がある場合 は、 '試合' で試してみてください。

var$variable<-rev(var$variable) 
dat[,match(var$variable, names(dat))] 

D C B A 
4 3 2 1 
関連する問題