【发布时间】:2021-01-23 20:50:38
【问题描述】:
我正在使用 R 中的 mtcars 数据集。我的任务是使用 knitr::kable() 打印与本田和丰田卡对应的行。我被定向到此寻求帮助:https://r4ds.had.co.nz/r-markdown.html#table
但是,该部分只讨论了打印数据集的前 5 行,根本没有讨论过滤它。我点击阅读有关该功能的更多信息,但这对我来说完全陌生。
我能说的最好的就是汽车的品牌和型号是行名。所以我需要过滤结果以仅打印名称包含“Honda”或“Toyota”的行,我需要使用 knitr::kable() 来完成。
我尝试过创建子集,但不确定如何使用行名来创建子集。也不知道如何搜索行名是否包含文本“Honda”或“Toyota”。
这是我使用 R 的第一天,而在今天之前,我唯一的编码经验是两年前的一些 C#。这对我来说非常令人沮丧,因为我可以在不到 30 秒的时间内在 Excel 中完成此操作。但是 R 就像一门外语,我不觉得我的教科书中提到的部分解释了这个问题——尤其是对于一个全新的编码器(而且这门课不应该需要任何经验)。感谢我能得到的任何帮助!
【问题讨论】:
-
澄清:
kable不进行过滤,只是将其渲染成美观的可打印表格。我同意,要过滤,您需要根据rownames(mtcars)对数据进行子集化,可能使用grep或grepl查找模式以查找匹配模式。如果您不熟悉正则表达式,现在是了解"Honda|Toyota"表示*“包含文字Honda或文字Toyota的好时机。对于案例,我是grepl的粉丝而不是grep像这样,但是ymmv。(一旦你知道如何过滤数据,只需将结果插入kable。) -
我使用了
knitr::kable(mtcars[grep(‘^Honda|^Toyota’, rownames(mtcars)),]),它就像一个魅力。非常感谢!