R:找到符合条件的行

时间:2013-10-11 07:45:51

标签: r conditional-statements

我已经看到了一些线索,并且已经制定了一个半答案,但我要求的与我所看到的略有不同。我正在寻找符合某些条件的行。这显然是一个条件本身,但我不知道如何在R中制定它。我到目前为止的代码是:

index = decisionMatrix[,1] == 1 & decisionMatrix[,9] == 1  
decisionMatrix[index,7] = .01  

将值0.01分配给满足该条件的行的第7列。我还想在选定行= 0.1下面的行的第7列。

非常感谢任何帮助! 由于
麦克

2 个答案:

答案 0 :(得分:3)

也许使用which

index <- which(decisionMatrix[,1] == 1 & decisionMatrix[,9] == 1)
## Shift indices by 1
index <- index+1
## Remove an index that would be greater than the number of rows
index <- index[index<=nrow(decisionMatrix)]
decisionMatrix[index,7] <- .01

编辑关注SimonO101评论,如果您想修改符合条件的行和下面的行,您只需要替换:

index <- index+1

通过:

index <- c(index, index+1)

答案 1 :(得分:0)

R中的子集使用逻辑向量。这意味着您可以将逻辑向量移动一个位置。例如:

set.seed(42)
DF <- data.frame(x=1:10, y=rnorm(10))
#     x           y
# 1   1  1.37095845
# 2   2 -0.56469817
# 3   3  0.36312841
# 4   4  0.63286260
# 5   5  0.40426832
# 6   6 -0.10612452
# 7   7  1.51152200
# 8   8 -0.09465904
# 9   9  2.01842371
# 10 10 -0.06271410

ind <- DF$y < 0
#Shift by one position:
ind <- c(FALSE, head(ind,-1))
DF[ind,]
#  x         y
#3 3 0.3631284
#7 7 1.5115220
#9 9 2.0184237