考虑这个例子
library(dplyr)
simple_dat_df <- data.frame(num = 1:5, let = letters[1:5], stringsAsFactors = FALSE)
grepl("[a-z]", simple_dat_df$let)
grepl("[a-z]", simple_dat_df[,"let"])
simple_dat_tbl <- data_frame(num = 1:5, let = letters[1:5])
grepl("[a-z]", simple_dat_tbl$let)
grepl("[a-z]", simple_dat_tbl[,"let"])
前三个grepl
命令返回[1] TRUE TRUE TRUE TRUE TRUE
。最后一个只有[1] TRUE
。
我希望它是一样的。意图是什么?最后一个语句怎么能返回一个向量?
答案 0 :(得分:1)
这是dplyr
的一项功能。如果将data_frame
子集化以获得一列,则不会简化向量的输出,这是data.frame
的标准行为。参见:
class(simple_dat_tbl$let)
[1] "character"
class(simple_dat_tbl[,"let"])
[1] "tbl_df" "data.frame"
如果您希望它返回矢量,则可以使用[[]]
。见:
class(simple_dat_tbl[["let"]])
[1] "character"
有关详细信息,请参阅this vignette。