从R标记内联代码中的TIBLE中提取值
我希望使用R标记文档中的内联代码从TIBLE访问一个值 下面的代码为我提供了一个1 x 2的TIBLE从R标记内联代码中的TIBLE中提取值,r,dplyr,r-markdown,knitr,tibble,R,Dplyr,R Markdown,Knitr,Tibble,我希望使用R标记文档中的内联代码从TIBLE访问一个值 下面的代码为我提供了一个1 x 2的TIBLE #library(tidyverse) #library(knitr) # Minimal working example df <- tibble( Event = c("Swimming","Swimming","Swimming","Camping","Hiking","Hiking") ) df # Creates 1 row x 2 column df %>% c
#library(tidyverse)
#library(knitr)
# Minimal working example
df <- tibble(
Event = c("Swimming","Swimming","Swimming","Camping","Hiking","Hiking")
)
df
# Creates 1 row x 2 column
df %>% count(Event) %>% slice(which.max(n))
退一步说,我正在寻找一种通用技术,用于从一系列dplyr命令中选择特定的行和单元格,而无需在此过程中创建新对象。要显示内联的代码行即使不在R标记中也无法运行,请在控制台中尝试。在管道中使用诸如[,[,$之类的特殊运算符时,您需要在前缀中指定它们,而不是像其他函数那样在中缀形式中指定它们。请注意尝试的代码的比较,或者使用[[向下钻取并仅选择文本,而不是返回TIBLE 图书馆管理员 df%countEvent%%>%slicewhich.maxn%%>%`[`1,1 >一个tibble:1x1 >事件 > >1游泳 df%%>%countEvent%%>%slicewhich.maxn%%>%`[`事件 >[1]游泳 然而,这并不能完全解决您的问题,因为R Markdown使用反勾号来表示内联代码,而且更改knitr用于查找和计算内联代码的解析规则非常复杂,因此在这里它会认为代码以`[`。因此,您可以为这些函数使用magrittr别名,在内联代码中使用extract和extract2: 最受欢迎的事件是'r df%>%countEvent%>%slicewhich.maxn%>%magrittr::extract2Event`
最受欢迎的活动是在渲染的降价中游泳。这就是你想要的吗
df %>% count(Event)
# A tibble: 3 x 2
# Event n
# 1 Camping 1
# 2 Hiking 2
# 3 Swimming 3
# To get the first row
(df %>% count(Event))[1,]
# Event n
# 1 Camping 1
我正在学习几种方法来做到这一点-谢谢大家 1.以下@labatnok:
r df %>% count(Event) %>% slice(which.max(n)) %>% {.[1,1]}
2.以下@MM77:
`r df %>% count(Event) %>% arrange(desc(n)) %>% slice(1) %$% Event`
# result
[1] "Swimming"
这种方法避免使用slice1中的which.max.1表示行,然后%$%事件按名称表示列
它不像base R[1,1]那样容易理解正在发生的事情,但是它完成了任务
3.以下@Mo alfafi:
(df %>% count(Event) %>% arrange(desc(n)))[1,1]
这种方法可以更容易地判断您选择的行/列,还可以避免命名列
4.以下@columyou:
df %>% count(Event) %>% slice(which.max(n)) %>% magrittr::extract2("Event")
我认为这个问题可以帮助你:是的,非常有帮助。让我们看看我是否可以把它应用到这个案例中…你可以尝试r df%>%countEvent%>%slicewhich.maxn%>%{[1,1]}。好吧,如果你在一个句子中包含这一点,你可能会想添加%>%到下面。这真的很有帮助。你知道一个更通用的解决方案,可以让我使用内联代码从TIBLE中选择,比如说,[2,1]或[2,2]。当我想要的结果在[1,1]中时,你优雅的解决方案效果很好。我正在考虑其他使用情形…只需更改extract2中的索引!如果您想要不同的列,请使用该数字/名称。这里是因为您使用了which.max,所以选择列也是选择单个元素。如果有更多行,请添加另一行[为了得到你想要的元素,在管道的末端。接近这个。这是一个好主意-我在我的文章中详细阐述了你的答案。
(df %>% count(Event) %>% arrange(desc(n)))[1,1]
df %>% count(Event) %>% slice(which.max(n)) %>% magrittr::extract2("Event")