Вы были близки, код должен быть
r1[, c(1,3)] <- replace(r1[, c(1,3)], r1[, c(1,3)] < 0, 0)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0.2061709 2.369698 5.175691 -0.26075135 1.839496
#[2,] 2.2648406 3.415909 1.520604 5.96894787 1.722426
#[3,] 2.8353015 3.963506 1.214609 -0.07933795 5.564458
#[4,] 0.0000000 3.757209 2.071613 4.02565738 2.864530
В пределах replace
вам необходимо указать столбцы 1 и 3 для аргумента x
, а также аргумент list
.Проблема с вашим кодом в том, что list
аргумент get переработан, и вы получите неправильные результаты.
replace(r1,r1[,c(1,3)] <0, 0)
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0.2061709 2.369698 5.175691 -0.26075135 1.839496
#[2,] 2.2648406 3.415909 1.520604 5.96894787 1.722426
#[3,] 2.8353015 3.963506 1.214609 -0.07933795 5.564458
#[4,] 0.0000000 3.757209 0.000000 4.02565738 0.000000
data
set.seed(2)
(r1 <- matrix(rnorm(20, mean=2, sd=2), ncol=5, nrow=4, byrow=T))
# [,1] [,2] [,3] [,4] [,5]
#[1,] 0.2061709 2.369698 5.175691 -0.26075135 1.839496
#[2,] 2.2648406 3.415909 1.520604 5.96894787 1.722426
#[3,] 2.8353015 3.963506 1.214609 -0.07933795 5.564458
#[4,] -2.6221382 3.757209 2.071613 4.02565738 2.864530