r - R中矩阵中可变列数的减法

标签 r

我有一个我认为应该很容易的问题,但我似乎无法找到解决它的好方法。我有一个在循环中创建的矩阵,矩阵中的列数各不相同。我想创建一个向量,其中向量中的每个项目计算如下(x 是矩阵中的列数):

vec[1] = mat[1,1] - mat[1,2] - mat[1,3] - mat[1,4] -...- mat[1,x]

vec[2] = mat[2,1] - mat[2,2] - mat[2,3] - mat[2,4] -...- mat[2,x]

这很简单,只有两列,我想出了如何用 3 列来做到这一点,但超过 3 列我就卡住了。这是我目前所拥有的示例:

 # Create 4 column matrix
 mat <- matrix(c(rep(1, 10),
                 rep(2, 10),
                 rep(3, 10),
                 rep(4, 10)), nc = 4)

 #Create 2 column matrix and calculate: column1 - column2
 mat.2col <- mat[,1:2]
 sapply(1:nrow(mat.2col), function(x) 
   diff(rev(c(mat.2col[x,1], mat.2col[x,2])))
 )

 # Create 3 column matrix and calculate: column1 - column2 - column3
 mat.3col <- mat[,1:3]
 sapply(1:nrow(mat.3col), function(x) 
   diff(rev(c(diff(rev(mat.3col[x,1:(ncol(mat.3col)-1)])),mat.3col[x,ncol(mat.3col)])))
 )

当矩阵中的列数发生变化时,关于如何完成减去矩阵行中的每个项目的任何建议?此外,减法的顺序很重要(必须从第 1 列中减去第 2 列,等等)。

最佳答案

我认为这就是您所追求的:

mat[,1] - rowSums(mat[,-1])

关于r - R中矩阵中可变列数的减法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33638127/

相关文章:

r - vcovHC 和置信区间

r - 从汇总函数中提取参数系数

r - 使用另一个多边形裁剪/剪辑复杂的 SpatialPolygonsDataFrame 的最快方法

r - 你如何在 R 中从另一个数据帧中减去两个数据帧

css - 是否可以修改折叠侧边栏的箭头?

r - 如何在 R 中为长列表设置 `replace`(或等效函数)

R:聚合数据,同时使用基本 R 添加新计数列

r - 传说在北卡罗来纳州地理 map 上消失?

r - Docker 是否足以满足具有约 100 个连接的 Shiny 应用程序,或者我是否需要 Shiny 代理?

windows - 检测windows上的核心数