代码之家  ›  专栏  ›  技术社区  ›  robertspierre

从TIBLE中选择单个列仍然返回TIBLE而不是向量

  •  0
  • robertspierre  · 技术社区  · 4 年前

    我有一个叫tibble的 df

    > class(df)
    [1] "tbl_df"     "tbl"        "data.frame"
    

    现在我运行:

    > sen <- df[df$my_dummy==0, "col_name"]
    

    > class(sen)
    [1] "tbl_df"     "tbl"        "data.frame"
    

    为什么?

    我怎样才能从中得到一个“数字”呢?

    1 回复  |  直到 4 年前
        1
  •  1
  •   Kra.P    4 年前

    尝试 pull

    sen <- df %>%
      filter(my_dummy == 0) %>%
      pull(col_name)
    
        2
  •  1
  •   Ronak Shah    4 年前

    $ 提取 col_name 作为向量。试一试-

    sen <- df$col_name[df$my_dummy == 0]
    
        3
  •  0
  •   gss    4 年前

    回答:为什么?

    这是一个有意识的决定。您可以在小插曲中了解这一点: Tibbles .

    这里提到了“严格”。默认情况下,您有一个data.frame参数 drop 设置为 TRUE ,但这并不意味着在任何情况下都会删除data.frame并得到向量。请参见此示例:

    df <- data.frame(a = 1, b = 2, c = 3)
    
    var <- "a"
    
    df[, var] # numeric vector
    
    var <- c("a", "b")
    
    df[, var] # data.frame