Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用for循环执行步骤15,并将向量与数据帧列匹配_R_For Loop_Match_Seq - Fatal编程技术网

使用for循环执行步骤15,并将向量与数据帧列匹配

使用for循环执行步骤15,并将向量与数据帧列匹配,r,for-loop,match,seq,R,For Loop,Match,Seq,我有一系列的数字是0或1。总长度为35115,如果采用35115/15,则有2341个区块。我想逐步遍历每个块,看看我的向量tmp是否与包含这些块的感兴趣列相匹配。我想沿着我的数据帧排序,但采取步骤15,并询问这15是否匹配我的向量。 我做错了什么?有人能帮我吗?谢谢你们教我一些有用的东西。干杯 x; V1 V2 V3 V4 V5 V6 V7 3R 11024348 A G A1 0 61 3R 11024348 A G A2 1 30 3R

我有一系列的数字是0或1。总长度为35115,如果采用35115/15,则有2341个区块。我想逐步遍历每个块,看看我的向量tmp是否与包含这些块的感兴趣列相匹配。我想沿着我的数据帧排序,但采取步骤15,并询问这15是否匹配我的向量。 我做错了什么?有人能帮我吗?谢谢你们教我一些有用的东西。干杯

x;
        V1       V2 V3 V4  V5 V6 V7
 3R 11024348  A  G  A1  0 61
 3R 11024348  A  G  A2  1 30
 3R 11024348  A  G  A3  0 68
 3R 11024348  A  G  A4  0 57
 3R 11024348  A  G  A5  0 63
 3R 11024348  A  G  A6  0 49
 3R 11024348  A  G  A7  0 60
 3R 11024348  A  G  B1  0 63
 3R 11024348  A  G  B2  0 64
 3R 11024348  A  G  B3  0 71
 3R 11024348  A  G  B4  1 51
 3R 11024348  A  G  B5  0 37
 3R 11024348  A  G  B6  0 52
 3R 11024348  A  G  B7  0 47
 3R 11024348  A  G AB8  0 83
 3R 11024410  C  T  A1  0 45
 3R 11024410  C  T  A2  1 54
 3R 11024410  C  T  A3  0 76
 3R 11024410  C  T  A4  0 48
 3R 11024410  C  T  A5  0 49
 3R 11024410  C  T  A6  1 48
 3R 11024410  C  T  A7  0 45
 3R 11024410  C  T  B1  0 48
 3R 11024410  C  T  B2  0 81
 3R 11024410  C  T  B3  1 58
 3R 11024410  C  T  B4  1 50
 3R 11024410  C  T  B5  0 65
 3R 11024410  C  T  B6  1 45
 3R 11024410  C  T  B7  0 66
 3R 11024410  C  T AB8  0 58


tmp<-c(1,1,0,1,1,1,1,1,1,1,1,1,0,0,0)
for(i in seq(from=1, to=length(X$V6), by=15)){print(matchID<-match(tmp,X$V6[i]))}
x;
V1 V2 V3 V4 V5 V6 V7
3R 11024348 A G A1 0 61
3R 11024348 A G A2 1 30
3R 11024348 A G A3 0 68
3R 11024348 A G A4 0 57
3R 11024348 A G A5 0 63
3R 11024348 A G A6 0 49
3R 11024348 A G A7 0 60
3R 11024348 A G B1 0 63
3R 11024348 A G B2 0 64
3R 11024348 A G B3 0 71
3R 11024348 A G B4 1 51
3R 11024348 A G B5 0 37
3R 11024348 A G B6 0 52
3R 11024348 A G B7 0 47
3R 11024348 A G AB8 0 83
3R 11024410 C T A1 0 45
3R 11024410 C T A2 1 54
3R 11024410 C T A3 0 76
3R 11024410 C T A4 0 48
3R 11024410 C T A5 0 49
3R 11024410 C T A6 1 48
3R 11024410 C T A7 0 45
3R 11024410 C T B1 0 48
3R 11024410 C T B2 0 81
3R 11024410 C T B3 1 58
3R 11024410 C T B4 1 50
3R 11024410 C T B5 0 65
3R 11024410 C T B6 1 45
3R 11024410 C T B7 0 66
3R 11024410 C T AB8 0 58

tmp关于预期输出,我不完全确定,但可能是:

首先复制数据:

x <- read.table(text = "        V1       V2 V3 V4  V5 V6 V7
 3R 11024348  A  G  A1  0 61
                3R 11024348  A  G  A2  1 30
                3R 11024348  A  G  A3  0 68
                3R 11024348  A  G  A4  0 57
                3R 11024348  A  G  A5  0 63
                3R 11024348  A  G  A6  0 49
                3R 11024348  A  G  A7  0 60
                3R 11024348  A  G  B1  0 63
                3R 11024348  A  G  B2  0 64
                3R 11024348  A  G  B3  0 71
                3R 11024348  A  G  B4  1 51
                3R 11024348  A  G  B5  0 37
                3R 11024348  A  G  B6  0 52
                3R 11024348  A  G  B7  0 47
                3R 11024348  A  G AB8  0 83
                3R 11024410  C  T  A1  0 45
                3R 11024410  C  T  A2  1 54
                3R 11024410  C  T  A3  0 76
                3R 11024410  C  T  A4  0 48
                3R 11024410  C  T  A5  0 49
                3R 11024410  C  T  A6  1 48
                3R 11024410  C  T  A7  0 45
                3R 11024410  C  T  B1  0 48
                3R 11024410  C  T  B2  0 81
                3R 11024410  C  T  B3  1 58
                3R 11024410  C  T  B4  1 50
                3R 11024410  C  T  B5  0 65
                3R 11024410  C  T  B6  1 45
                3R 11024410  C  T  B7  0 66
                3R 11024410  C  T AB8  0 58", header = TRUE)

tmp<-c(1,1,0,1,1,1,1,1,1,1,1,1,0,0,0)
一个可能更快的替代方法是将data.frame的列转换为矩阵,并执行以下操作:

colSums(matrix(x$V6, nrow = 15) == tmp) == 15L
#[1] FALSE FALSE

如果您真的想为循环使用
,则需要定义一个数据结构来存储循环结果(可以是数字、字符串、列表、矩阵等的向量)


类似于
matchIDPlease的东西提供了一个最小的可重复性示例。罗兰:任何数据都可以工作,但这里是真实数据的一小部分。我想在15步中匹配x$V6到tmp。这里有两个步骤,为什么会有反对票?我提供了一个具体的问题与具体的需求和一个循环的例子,我不能工作?嗨,罗兰,这是一个伟大的方式做我问的,我甚至没有考虑。来个forloop怎么样?我问,因为它困扰着我,我无法计算forloop。我不明白你在那里用
print
match
做什么,但基本思想是你需要计算索引,即
I+0:14
。嗨,罗兰,我不太习惯聚合函数。如果你真的找到了一个匹配项,有没有一种简单的方法可以在数据帧中反转并拉出匹配项?谢谢迈克,这是一个巨大的帮助。我对如何做到这一点进行了思考,得到了3个答案。
colSums(matrix(x$V6, nrow = 15) == tmp) == 15L
#[1] FALSE FALSE
for(i in seq(from=1, to=length(X$V6), by=15)){print(matchID<-match(tmp,X$V6[i]))}
>for(i in seq(1,30,15)) print(i)
[1] 1
[1] 16
matchID<-vector() # stores the loop return in a vector
for(i in 1:length(x[, "V6"]){  
  matchID[i]<- as.numeric(tmp == x[, "V6"])[i]
}
matchID<-as.numeric(tmp == x[, "V6"])