If statement 如果else循环不工作

If statement 如果else循环不工作,if-statement,matrix,variable-assignment,If Statement,Matrix,Variable Assignment,我是R工作室的初学者,希望有人能帮我解决这个问题。案例:我想做一个if-else循环。我为ltimesm矩阵编写了以下代码: for (i in 1:l){ for (j in 1:m){ if (is.na(quantilereturns[i,j]) < quantile(quantilereturns[,j], c(.1), na.rm=TRUE)) { quantilereturns[i,j] } else { (0) } } } f

我是R工作室的初学者,希望有人能帮我解决这个问题。案例:我想做一个if-else循环。我为
l
times
m
矩阵编写了以下代码:

for (i in 1:l){
  for (j in 1:m){ 
    if (is.na(quantilereturns[i,j]) < quantile(quantilereturns[,j], c(.1), na.rm=TRUE)) { 
      quantilereturns[i,j]    
    } else { (0) }
  }
}
for(1:l中的i){
对于(j in 1:m){
如果(is.na(quantilereturns[i,j])
小结:我想制作一个矩阵,其值小于矩阵中某个向量的分位数
quantilereturns
。所以当它们小于10%分位数时,它们得到它们的原始值,否则它将是零。 代码没有给出任何错误,但也不会更改矩阵中的值。
有人能帮我吗

您需要将结果分配给矩阵的一个单元格。我将以最近另一个线程的矩阵为例:

a <- c(4, -9, 2)
b <- c(-1, 3, -8)
c <- c(5, 2, 6)
d <- c(7, 9, -2)
matrix <- cbind(a,b,c,d)

d <- dim(matrix)
rows <- d[1]
columns <- d[2]

print("Before")
print(matrix)

for (i in 1:rows) {
  for (j in 1:columns) {
    if (is.na(matrix[i,j]) >= quantile(matrix[,j], c(.1), na.rm=TRUE)) {
      matrix[i,j] <- 0
    }
  }
}

print("After")
print(matrix)
因此,您要寻找的基本行是
矩阵[i,j]的可能副本
[1] "Before"
      a  b c  d
[1,]  4 -1 5  7
[2,] -9  3 2  9
[3,]  2 -8 6 -2
[1] "After"
     a b c d
[1,] 0 0 5 0
[2,] 0 0 2 0
[3,] 0 0 6 0