【问题标题】:choose the specific variable in r选择 r 中的特定变量
【发布时间】:2015-06-06 15:05:58
【问题描述】:

有像这张表这样的数据:

v1 v2 v3 v4 v5 v6 v7 v8 v9 v10 v11 v12 v13 v14 v15

4  0  0  2  0  0  0  0  0   0   0   0   0   0   0

1  0  0  1  0  0  0  0  0   0   0   0   0   0   0

2  0  0  1  0  0  0  0  0   0   0   0   0   0   0

1  0  0  1  0  0  0  0  0   0   0   0   0   0   0

2  0  0  3  0  0  0  0  0   0   0   0   0   0   0

并且我希望创建一个新矩阵,其中特定变量列的数值不同于零(在这种情况下,特定变量列是 v1 和 v4)。

我知道子集函数,但我找不到使用“if 语句”选择条件列的方法。

我的意思是...如何使用“if 语句”创建一个仅包含数值不为零的特定列的矩阵?

请帮我解决我的问题。

谢谢。

【问题讨论】:

    标签: r if-statement subset


    【解决方案1】:

    您尚未指定数据的格式,但如果您有矩阵或 data.frame,您应该能够使用R extract operator ([) 仅指定您想要的列。您可以为该规范提供一个逻辑值向量(TRUEFALSE),因此您只需要一个返回所需逻辑值的函数即可。

    作为一个简单的矩阵示例,您可以应用一个函数来查看矩阵的每一列是否有任何非零值:

    > a
         [,1] [,2] [,3] [,4]
    [1,]    0    1    0    4
    [2,]    0    2    0    5
    [3,]    0    3    0    6
    
    > a[, apply(a, 2, function(x) { return(any(x != 0)) })]
         [,1] [,2]
    [1,]    1    4
    [2,]    2    5
    [3,]    3    6
    

    同样的提取机制也适用于 data.frames:

    > a
      V1 V2 V3 V4
    1  0  1  0  4
    2  0  2  0  5
    3  0  3  0  6
    > a[, sapply(a, function(x) { return(any(x != 0)) })]
      V2 V4
    1  1  4
    2  2  5
    3  3  6
    

    【讨论】:

      猜你喜欢
      • 2019-08-30
      • 1970-01-01
      • 2023-03-27
      • 2015-05-16
      • 1970-01-01
      • 2021-11-09
      • 2017-01-08
      • 2016-05-08
      • 1970-01-01
      相关资源
      最近更新 更多