【发布时间】:2017-04-20 17:09:21
【问题描述】:
我有以下 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”只有最后一列)。对于如何克服这个问题的任何建议,我将不胜感激。我很高兴尝试将向量作为循环,这可能不是最好的解决方案。
非常感谢!
【问题讨论】:
-
为了清楚起见,你能把想要的输出放在第一行或第二行吗?
-
是的,对不起。这是输入文件前 3 行所需的输出: 第一行:G H NA NA A B NA NA C D NA NA 第二行:7 8 NA NA 9 10 NA NA 11 12 NA NA 第三行:2 D NA NA F R NA NA T G NA NA(为糟糕的格式道歉)
-
@Tati - 请编辑您的帖子以包含该信息。评论很难阅读。