删除 hansl 中的列

deleting a column in hansl

我有一个非常简单的问题。我想在循环中从矩阵中删除一列。

在 Matlab 中,我使用以下内容:

对于某个i,

X(:,i)=[]

删除列并重塑矩阵。

我想知道 Hansl (Gretl) 程序中的等效项。

谢谢!

抱歉,现在对您来说可能为时已晚,但我刚刚看到您的问题,也许对其他人有用。 在 hansl(gretl 的脚本和矩阵语言)中,我可以想到几种可能性:

首先,如果您碰巧知道列数和 i 的值,解决方案可以使用硬连线索引向量(此处 i==2 和 cols(X)==5):

X = X[, {1, 3,4,5}]

其次,由于第一个解决方案可能限制太多,您可以连接矩阵的左右部​​分,如:

X = X[, 1: i-1] ~ X[, i+1 :cols(X)]

但这里的问题是我不能索引第一列或最后一列,否则索引会产生错误。

所以我最后一个普遍适用的建议是:

X = selifc( X, ones(1, i-1) ~ 0 ~ ones(1, cols(X) - i) ) 

selifc() 函数丢弃第二个向量参数具有 0 条目的列。这也适用于 i==1 或 i==cols(X)。 此最终解决方案的较短变体可能是:

X = selifc(X, seq(1, cols(X)) .!= i)

它对使用 seq() 函数构造的列索引进行逐元素不等于 i 比较 (.!=)。但它可能不如以前的方式可读。

祝你好运!