首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在R中,如何删除包含负数的矩阵的所有列?

在R中,如何删除包含负数的矩阵的所有列?
EN

Stack Overflow用户
提问于 2018-03-04 22:36:57
回答 4查看 182关注 0票数 1

我希望从包含至少一个负数的矩阵M中删除这些列。例如,如果

代码语言:javascript
运行
复制
M = (1  0  0  1)
    (1 -1  0  2)
    (2  3  4 -3)

我想让我成为

代码语言:javascript
运行
复制
M = (1  0)
    (1  0)
    (2  4)

如何键入 M <- removeNegativeColumns(M) 代码?

EN

回答 4

Stack Overflow用户

发布于 2018-03-04 22:50:58

简单的方法可以是使用sum作为列的条件,其中value < 0 (-ve)

代码语言:javascript
运行
复制
    # Data
    M <- matrix(c(1,0,0,1,1, -1,  0,  2,2,  3,  4, -3), ncol = 4, byrow = T)

    M[, !colSums(M < 0 )]
#     [,1] [,2]
#[1,]    1    0
#[2,]    1    0
#[3,]    2    4
票数 6
EN

Stack Overflow用户

发布于 2018-03-04 22:49:12

代码语言:javascript
运行
复制
M <- matrix(c(1,0,0,1,1, -1,  0,  2,2,  3,  4, -3), ncol = 4, byrow = T)

M1<- apply(M, 2,function(i)
{
  p<- any(i <0)==FALSE #(any(as.vector(i)) < 0)
  p
})

M<- M[,M1]
票数 2
EN

Stack Overflow用户

发布于 2018-03-04 22:59:43

代码语言:javascript
运行
复制
removeNegativeColumns <- function(M) M[,apply(M>=0,2,all)]
removeNegativeColumns(M)
#      [,1] [,2]
# [1,]    1    0
# [2,]    1    0
# [3,]    2    4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49101246

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档