我想问一下使用临时变量来替换第SELECT dte "Date", location, receipts,
SUM(receipts) OVER(ORDER BY dte
ROWS BETWEEN UNBOUNDED PRECEDING
AND CURRENT ROW) "Running total"
FROM store
WHERE dte < '10-Jan-2006'
ORDER BY dte, location
行矩阵。
我希望将一行k
替换为零。
因此,我创建了一个名为X
的{{1}}副本,并且在每次迭代中,X
的值都由Ynew1
更新(第一个值)。但是,在我的代码中,Ynew1
的行不仅被0替换,还被X
替换。不幸的是,结果是Ynew1
矩阵全为零(我预计最后一行的结果为零值)。这是代码:
X
答案 0 :(得分:2)
好。我认为您要完成的目标如下:
将
k
的{{1}}行替换为零
您使用的for循环结构并不理想。在每次x
或行迭代中,您将i
重新复制到x
,然后继续将行清零。
在这种情况下,你应该像Ynew
那样定位第一行:
k
注意:该函数处理R矩阵输入。 (例如,假设索引从1开始,而不是C ++的0。)
示例:
cppFunction('
// @param x A \code{matrix} with dimensions n x m.
// @param k An \code{unsigned int} whose index begins at 1.
// @return A \code{matrix} with row \code{k} equal to zero.
Rcpp::NumericMatrix cobo(Rcpp::NumericMatrix x, unsigned int k){
unsigned int n = x.nrow();
// Bounds check
if(k - 1 >= n){ stop("OOB Error"); }
// Replace row by a vector of zeros.
x(k - 1, Rcpp::_) = Rcpp::NumericVector(x.ncol());
return x;
}
')