【发布时间】:2020-12-16 04:44:09
【问题描述】:
创建一个 for 循环,用 1 到 10 之间的随机整数替换数字矩阵中的负值。同时,它计算负值并打印它们的数量。
我在第一部分尝试这样做,但没有成功。
有人可以帮忙吗?
谢谢
【问题讨论】:
-
欢迎堆栈溢出。请看一下这个How to Ask。您还应该在此处发布您迄今为止尝试过的代码,以便我们更好地了解导致错误的原因。
标签: r
创建一个 for 循环,用 1 到 10 之间的随机整数替换数字矩阵中的负值。同时,它计算负值并打印它们的数量。
我在第一部分尝试这样做,但没有成功。
有人可以帮忙吗?
谢谢
【问题讨论】:
标签: r
你可以试试下面的代码
print(sum(mat<0))
replace(mat,mat<0,sample(1:10,sum(mat<0),replace = TRUE))
或嵌套for循环
for (i in 1:nrow(mat)) {
for (j in 1:ncol(mat)) {
if (mat[i,j]<0) {
mat[i,j] <- sample(1:10,1)
}
}
}
示例
set.seed(1)
mat <- matrix(rnorm(15),3,5)
> mat
[,1] [,2] [,3] [,4] [,5]
[1,] -0.6264538 1.5952808 0.4874291 -0.3053884 -0.6212406
[2,] 0.1836433 0.3295078 0.7383247 1.5117812 -2.2146999
[3,] -0.8356286 -0.8204684 0.5757814 0.3898432 1.1249309
> print(sum(mat<0))
[1] 6
> replace(mat,mat<0,sample(1:10,sum(mat<0),replace = TRUE))
[,1] [,2] [,3] [,4] [,5]
[1,] 10.0000000 1.5952808 0.4874291 4.0000000 3.000000
[2,] 0.1836433 0.3295078 0.7383247 1.5117812 6.000000
[3,] 9.0000000 1.0000000 0.5757814 0.3898432 1.124931
【讨论】:
类似的东西
# sample data
mat = matrix(data = sample(-10:10, size=40, replace = T), nrow = 5)
print(mat)
# count of negative values
print(length(mat[mat < 1]))
# replace negative by random int
mat[mat < 1] = sample(1:10, size=1)
【讨论】: