首页 文章

从矩阵中删除列

提问于
浏览
2

我对R有点新,并希望通过该列的名称从矩阵中删除列 . 我知道 X[,2] 给出第二列, X[,-2] 给出除第二列之外的每一列 . 我真正想知道的是,如果's a similar command using column names. I'有一个矩阵并且想要删除"sales"列,但 X[,-"sales"] 似乎不适用于此 . 我该怎么做?我只会使用列号,我希望以后可以将它用于其他矩阵,它们具有不同的尺寸 . 任何帮助将非常感激 .

3 回答

  • 1

    我最喜欢的方式:

    # create data
    df <- data.frame(x = runif(100),
                     y = runif(100),
                     remove_me = runif(100),
                     remove_me_too = runif(100))
    
    # remove column
    df <- df[,!names(df) %in% c("remove_me", "remove_me_too")]
    

    所以这个数据帧:

    > df
                  x           y  remove_me remove_me_too
    1   0.731124508 0.535219259 0.33209113   0.736142042
    2   0.612017350 0.404128030 0.84923974   0.624543223
    3   0.415403559 0.369818154 0.53817387   0.661263087
    4   0.199780006 0.679946936 0.58782429   0.085624708
    5   0.343304259 0.892128112 0.02827132   0.038203599
    

    成为这个:

    > df
                  x           y
    1   0.731124508 0.535219259
    2   0.612017350 0.404128030
    3   0.415403559 0.369818154
    4   0.199780006 0.679946936
    5   0.343304259 0.892128112
    
  • 1
    df <- data.frame(x = runif(10),
                     y = runif(10),
                     z = runif(10),
                     w = runif(10))
    matrix_to_data_frame(df)
    
    df$x<-NULL
    df
    
  • 2

    与R一样,有许多潜在的解决方案 . 您可以使用包 dplyrselect() 轻松删除或选择数据框中的列 .

    df <- data.frame(x = runif(100),
                     y = runif(100),
                     remove_me = runif(100),
                     remove_me_too = runif(100))
    
    library(dplyr)
    select(df, -remove_me, -remove_me_too) %>% head()
    #>            x           y
    #> 1 0.35113636 0.134590652
    #> 2 0.72545356 0.165608839
    #> 3 0.81000067 0.090696049
    #> 4 0.29882204 0.004602398
    #> 5 0.93492918 0.256870750
    #> 6 0.03007377 0.395614901
    

    你可以阅读更多关于 dplyr 及其动词here.的信息

相关问题