我在R脚本中有一个矩阵,我想删除R中与标签匹配的矩阵中的列。
例如:
A <- matrix(c(4,5,4,4), nrow=1)
dimnames(A)= list(c("row1"),c("foo","bar","alfa","foo"))
foo bar alfa foo
row1 4 5 4 4我希望删除foo-4列,因为它与标签匹配,而不是列alfa-4。
我试着
duplicated.columns <- duplicated(t(A))
A <- A[, !duplicated.columns]但结果是
foo bar
4 5 我怎么才能解决这个问题?
发布于 2014-11-24 22:57:09
尝试以下几点:
A[,!duplicated(colnames(A))]发布于 2014-11-25 04:20:30
我想补充的是,当前的两个答案都会将矩阵降到指定的向量。
class(A[, unique(colnames(A))])
# [1] "numeric"
class(A[, !duplicated(colnames(A))])
# [1] "numeric"若要使A在删除重复列后保持矩阵,可以使用drop = FALSE。
class(A[, unique(colnames(A)), drop = FALSE])
# [1] "matrix"
class(A[, !duplicated(colnames(A)), drop = FALSE])
# [1] "matrix"我之所以提到这一点,是因为如果在函数中使用子集,这可能很重要。
https://stackoverflow.com/questions/27115609
复制相似问题