-1

for ループを使用して、データの特定のサブセットに対して操作を実行しています。for ループの各反復の最後に、データフレームの行を埋めるために必要なすべての値を取得します。

これまで試した

df=NULL
for(...){  
//stuff to calculate   
newline=c(allthethingscalculated)  
df=rbind(df,newline)
}

これにより、行が原子ベクトルになるため、データフレームの内容に '$' を使用してアクセスできなくなります。

また、各反復の最後に取得した値を既存のベクトルに追加しようとしましたが、for ループの終了時にこれらのベクトルからデータフレームを作成しましたが、それぞれのベクトルに値を追加しても機能しませんでした。追加しました。

x<-data.frame(a,b,c,d,...)

これに関するアイデアはありますか?


for ループはデータ内の ID を反復処理するため、次のようなことができることに気付きました。

uids=unique(data$id)
filler=c(1:length(uids))
df=data.frame(uids,filler,filler,filler,filler,filler,filler,filler,filler,filler)

for(i in uids){
...
df[i,]<-newline
}

フィラーを使用して正しい数の列と行を持つデータフレームを作成したので、「置換の長さは 9、置換の長さは 1」のようなエラーは発生しません。

これを行うより良い方法はありますか?このアプローチを使用すると、削除する必要があるそれぞれの行にまだフィラーの値がありますか?

4

1 に答える 1

0

これでうまくいくはずです。データを見せてもらえますか?

R) x=data.frame(a=rep(1,3),b=rep(2,3),c=rep(3,3))
R) d=c(4,4,4)
R) rbind(x,d)
  a b c
1 1 2 3
2 1 2 3
3 1 2 3
4 4 4 4
R) cbind(x,d)
  a b c d
1 1 2 3 4
2 1 2 3 4
3 1 2 3 4
于 2013-03-19T07:46:40.227 に答える