我想知道是否有人可以帮我理解这个功能的输出。我知道它应该返回长度为2的位置,但我不确定如何解释输出。
fun1 = function(M,k) {
n = nrow(M)
m = ncol(M)
runs = vector('list',length=m)
for(i in 1:m) {
for(j in 1:(n-k+1)) {
if(all(M[j:(j+k-1),i]==1)) runs[[i]] = c(runs[[i]],j)
}
}
return(runs)
}
set.seed(123)
M = matrix(sample(0:1,size=15,replace=TRUE),ncol=3,nrow=5)
fun1(M,2)
输出:
[[1]]
[1] 4
[[2]]
[1] 2 3
[[3]]
[1] 3
答案 0 :(得分:0)
列表中的每个元素都是列的输出,从最左侧的列开始。数字列表(如果没有,则为NULL)为您提供该列中的行号,其中连续有两个1。
要解释您的样本输出:
- 在第一个(最左侧)列中,从第4行开始有两个1(M [4,1],M [5,1]为1)
- 在第二列中,从第2行开始有两个1(意思是第2行,第3行是1),第3行(意思是第3行和第4行是1)
- 在第三行中,有两个1从第3行开始
如果你打印矩阵M,你可以检查这是否属实,矩阵M给你的种子看起来像这样
[,1] [,2] [,3]
[1,] 0 0 1
[2,] 1 1 0
[3,] 0 1 1
[4,] 1 1 1
[5,] 1 0 0
我希望说清楚。
顺便说一句,在将来,尝试使用适当的缩进和换行符更好地格式化代码。我不得不手动添加换行符以使示例代码工作,但是给出种子的好工作:)