2

これについていくつかのスレッドを見て、半回答を作成しましたが、必要なものは私が見たものとは少し異なります。特定の条件を満たす行の下の行を探しています。それは明らかにそれ自体が条件ですが、Rでそれを定式化する方法がわかりません。これまでのコードは次のとおりです。

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

これは、その条件を満たす行の列 7 に値 0.01 を割り当てます。選択した行の下の行の列7も0.1にしたいと思います。

どんな助けでも大歓迎です!
ありがとう
マイク

4

2 に答える 2

7

たぶん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

EDIT : SimonO101 コメントに続いて、条件に一致する行とその下の行の両方を変更する場合は、次のように置き換えるだけです:

index <- index+1

に :

index <- c(index, index+1)
于 2013-10-11T07:50:39.673 に答える
0

R でのサブセット化では、論理ベクトルが使用されます。つまり、論理ベクトルを 1 桁シフトできます。例:

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
于 2013-10-11T07:54:02.937 に答える