I`veは10行と13列(一例として、実際のファイルがはるかに大きい)と、次のファイルだ:私は新しい行列を作成する必要がダブルループ出力
ID1 A B C D E F G H A B C D
ID2 1 2 3 4 5 6 7 8 9 10 11 12
ID3 A B 1 2 C 1 2 D F R T G
...
を、入力ファイルの `8-13の列は4列ごとに配置されます(条件もありますが、それはうまくいきます;問題はループが出力を上書きするということです)。ここでは、ループを持つスクリプトは次のとおりです。
data=read.table("input file", h=T)
out=matrix("NA",10,12)
for(i in c(1:10)){
for(k in seq(8,13,2){
for(s in seq(1,12,4){
for(q in seq(2,12,4){
out[i,s]=data[i,k]
out[i,q]=data[i,k+1]}}}}
残念ながら、ループが(「アウト」という名前は、最後の列があります)データと出力行列が上書きされます。私はこれを克服する方法に関する提案に非常に感謝しています。私はループとしてベクトルを試してみてうれしく思います。これはおそらく最良の解決策ではありません。
多くの感謝!
を行う必要があり、単に最初の行または2を言うためにあなたは、所望の出力を置くことができますか? – Gladwell
はい、申し訳ありません。第1行:GH NA NA NA NA NA CD NA NA第2行:7 8 NA NA 9 10 NA NA 11 12 NA NA:第3行:2 D NA NA FR:入力ファイルの最初の3行の出力NA NA TG NA該当なし(フォーマットが不適切な場合にはお詫び申し上げます) – Tati
@Tati - 投稿を編集してその情報を追加してください。コメントは読みにくいです。 – Parfait