首页 > 解决方案 > R中需要真假的缺失值

问题描述

我有一些 R 代码,我需要将甚至不在矩阵中的元素乘以两倍

set.seed(75)
M <- matrix(sample(30, replace=T), nrow=5, ncol=5)

Fun4 <- function(M){
 for (i in 1:nrow(M)){
 for (j in 1:ncol(M)){
 if(M[i][j]%%2!=0){
  M[i][j] <- 2*M[i][j]
 }
 }
 }

Res <- Fun4(M)
print(Res)

在具有随机数的矩阵中,我们只想将奇数乘以 2,然后打印我们的新矩阵

运行代码时,我将错误设置为:

if(M[i][j]%%2!=0){: 需要 True / False 的地方缺少值

标签: r

解决方案


要获取矩阵的行i、列j中的元素,您需要使用M[i,j]。你写M[i][j],这里M[i]给出了扁平矩阵的第 i 个元素(一个数字),当你尝试取这个数字的第 j 个元素时,对于 j>1,你得到NA

> M[1]
[1] 8
> M[1][1]
[1] 8
> M[1][2]
[1] NA
> M[1][2] %% 2 != 0
[1] NA
> if (M[1][2] %% 2 != 0) true
Error in if (M[1][2]%%2 != 0) true : 
  missing value where TRUE/FALSE needed

正如其他人指出的那样,您的函数定义也缺少一个右括号。


推荐阅读