0

私はこのようなベクトルを持っています:

vec1 <- c("x1","x2","x3","x4")

私はこのような別のベクトルを持っています:

vec2 <- c("X1.RData","X2.RData","X3.RData","X4.RData")

ここで私がやろうとしているのは、RDataファイルをロードしてから、同じファイル名で保存し直すことですが、オブジェクトはvec1のオブジェクトである必要があります。

for (i in 1:length(vec1)){
vec1[i] <- get(load(vec2[i]))
save(vec1[i],file=vec2[i])
}

"incompatible types" しかし、次のようにキャラクターオブジェクトのクラスも変更しようとしたというエラーが表示されます。

class(vec1[i]) <- myclass

ここで、myclassはS4タイプのオブジェクトのクラスです。

Rでこれを行う方法はありますか?

4

1 に答える 1

0

各.Rdataファイル内のオブジェクトの名前を知っている必要があります。オブジェクト名はオブジェクトの内容とともに保存され、を使用してアクセスした場合load、それらが保存されているファイルの名前は割り当てられません。assignさらに、これらのオブジェクトに新しい名前を付けるには、を使用する必要があります。当時、ワークスペースに他に何もなかったと仮定します。

未テスト:

for (i in 1:length(vec1)){ load(vec2[i])
   assign( vec1[i] , get( ls() )
   save(vec1[i],file=vec2[i])
   rm(list=ls(patt="^x.$") )
}

ワークスペースに他のものがある場合は、それらの.Rdataファイル内のオブジェクトの名前を実際に知る必要があります。(load()これらを特定の環境に導入した場合でも、プロセスをワークスペースの残りの部分から隔離できる可能性があります/)

于 2012-08-20T04:50:42.410 に答える