双循环输出到一个矩阵

时间:2017-04-20 17:09:22

标签: r loops matrix

我有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]}}}}

不幸的是,循环会覆盖数据和输出矩阵(名为" out"只有最后一列)。我非常感谢有关如何克服这个问题的任何建议。我很高兴尝试将矢量作为循环,或许不是最佳解决方案。

非常感谢!

1 个答案:

答案 0 :(得分:1)

如果我理解正确你想要数据[,8]输出[,1],数据[,9]输出[,2],数据[,10]输出[,5]等等。

这应该这样做

out <- matrix(NA, nrow = nrow(data), ncol = 12)
out[, sort(c(seq(1,9,4), seq(2,10,4)))] <- data[, seq(8, 13)]