删除列后将列重新排序为初始顺序
Resorting columns to initial ordering after deletion of columns
笨拙的标题,但让我解释一下其中的内容:
我的初始矩阵如下所示:
kitty <- matrix(
c(1, 2, 4, 0, 0, 0, 0, 0, 0, 3, 1, 2),
nrow=3,
ncol=4)
返回:
X1 X2 X3 X4
1 0 0 3
2 0 0 1
4 0 0 2
我删除所有零列
kitty<- kitty[, colSums(kitty != 0) > 0]
因为我必须 运行 矩阵上的一组特定计量经济学产生(这里是完整的随机数字集,重要的是第 2 列和第 3 列不再包含在其中并且我的方法没有请允许我命名列):
kitty2 <- matrix(
c(2, 3, 4, 1, 3, 8),
nrow=3,
ncol=2)
X1 X4
2 1
3 3
4 8
什么是将列重置回初始位置并用 NA 或 0 填充缺失列的有效方法(我有数百个这样的矩阵)?
X1 X2 X3 X4
2 NA NA 1
3 NA NA 3
4 NA NA 8
所以坦率地说,我不太确定这是否特别有效,但这是我能想到的最好的方法:
获取 kitty
的非零索引:
indices <- which(colSums(kitty != 0) > 0)
然后一旦你有 kitty2
,用你更改的列的值重新填充 kitty
。
kitty[,indices] <- kitty2
kitty
[,1] [,2] [,3] [,4]
[1,] 2 0 0 1
[2,] 3 0 0 3
[3,] 4 0 0 8
然后您可以将列保留为零或将它们更改为 NA
。
您可以不尝试重新创建已删除的列,而是从一开始就分配 NA
吗?
kitty <- matrix(
c(1, 2, 4, 0, 0, 0, 0, 0, 0, 3, 1, 2),
nrow=3,
ncol=4)
kitty[,!(colSums(kitty) > 0)] <- NA
kitty
# [,1] [,2] [,3] [,4]
# [1,] 1 NA NA 3
# [2,] 2 NA NA 1
# [3,] 4 NA NA 2
笨拙的标题,但让我解释一下其中的内容:
我的初始矩阵如下所示:
kitty <- matrix(
c(1, 2, 4, 0, 0, 0, 0, 0, 0, 3, 1, 2),
nrow=3,
ncol=4)
返回:
X1 X2 X3 X4
1 0 0 3
2 0 0 1
4 0 0 2
我删除所有零列
kitty<- kitty[, colSums(kitty != 0) > 0]
因为我必须 运行 矩阵上的一组特定计量经济学产生(这里是完整的随机数字集,重要的是第 2 列和第 3 列不再包含在其中并且我的方法没有请允许我命名列):
kitty2 <- matrix(
c(2, 3, 4, 1, 3, 8),
nrow=3,
ncol=2)
X1 X4
2 1
3 3
4 8
什么是将列重置回初始位置并用 NA 或 0 填充缺失列的有效方法(我有数百个这样的矩阵)?
X1 X2 X3 X4
2 NA NA 1
3 NA NA 3
4 NA NA 8
所以坦率地说,我不太确定这是否特别有效,但这是我能想到的最好的方法:
获取 kitty
的非零索引:
indices <- which(colSums(kitty != 0) > 0)
然后一旦你有 kitty2
,用你更改的列的值重新填充 kitty
。
kitty[,indices] <- kitty2
kitty
[,1] [,2] [,3] [,4]
[1,] 2 0 0 1
[2,] 3 0 0 3
[3,] 4 0 0 8
然后您可以将列保留为零或将它们更改为 NA
。
您可以不尝试重新创建已删除的列,而是从一开始就分配 NA
吗?
kitty <- matrix(
c(1, 2, 4, 0, 0, 0, 0, 0, 0, 3, 1, 2),
nrow=3,
ncol=4)
kitty[,!(colSums(kitty) > 0)] <- NA
kitty
# [,1] [,2] [,3] [,4]
# [1,] 1 NA NA 3
# [2,] 2 NA NA 1
# [3,] 4 NA NA 2