如何在R中每12列找到每行小于-1的值?

时间:2017-10-24 16:44:36

标签: r matrix which

我有一个矩阵(100 * 120),我试图在每12行的每一行中找到值< = - 1。我曾多次尝试但失败了。很容易找到< = -1的值,但我不知道如何考虑每12列并存储每行的结果。谢谢你的帮助。

set.seed(100)
Mydata <- sample(x=-3:3,size = 100*120,replace = T)
Mydata <- matrix(data = Mydata,nrow = 100,ncol = 120)
results <- which(Mydata<=-1,arr.ind = T)

2 个答案:

答案 0 :(得分:0)

您可以使用apply函数一次为每行应用哪一个函数。如果我误解了你想要的东西,你可以相应地调整MARGIN参数。

# MARGIN=1 to apply across rows
dd <- apply(Mydata,MARGIN=1,function(x) which(x <= -1))
dd[1] # which columns in row 1 have a value <= -1

答案 1 :(得分:0)

您可以使用应用函数和seq()

的组合来完成此操作
#Example Data
set.seed(100)
Mydata <- sample(x=-3:3,size = 100*120,replace = T)
Mydata <- matrix(data = Mydata,nrow = 100,ncol = 120)

#Solution:
Myseq <- sapply(0:9,function(x) seq(1,12,1) + 12*x)
sapply(1:dim(Myseq)[2], function(x) which(Mydata[,Myseq[,x]] == -1))

这导致列表包含:

  • 列表中的每个子集代表您的10组12列中的一组

  • 每个子集下的每个值,表示12个列中值为-1的任何值的矩阵中的位置。