r - 如果列中出现负值,如何复制该列?

标签 r

我有以下矩阵(示例):

mat <- matrix(c(seq(8,-1), 
                seq(9,0),
                seq(6,-3)),10,3) 

现在,如果列中出现负值,我想重新启动该列。 所以我想得到以下矩阵:

solution_mat <- mat 
solution_mat[10,1] <-8 
solution_mat[8:10,3] <- 6:4

感谢您的帮助!

最佳答案

尝试以下操作:

apply(mat, 2, function(x){
  inx <- which(x < 0)
  x[inx] <- x[seq_along(inx)]
  x
})
#      [,1] [,2] [,3]
# [1,]    8    9    6
# [2,]    7    8    5
# [3,]    6    7    4
# [4,]    5    6    3
# [5,]    4    5    2
# [6,]    3    4    1
# [7,]    2    3    0
# [8,]    1    2    6
# [9,]    0    1    5
#[10,]    8    0    4

关于r - 如果列中出现负值,如何复制该列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62626140/

相关文章:

从 R 中的库效果中删除图​​中第 3 轴和第 4 轴上的刻度

r - 根据第一个的列值计算第二个数据表中的行而不合并

r - 将垂直符号添加到绘图中

r - 相当于 RStudio 构建面板按钮的开发工具

R编程(初学者的挣扎): How can I make this list more efficiënt

r - 制作一个重复的字母数字列表

R Highcharter : tooltip customization

r - R function() 中的美元符号 "$"是什么意思?

R:从一个数据框中删除在另一数据框中的行

r - cSplit 库(splitstackshape)总是删除列