समस्या
मेरे इनलाइन कोड हिस्सा टूट जाता है जब मैं filter()
या select()
एक स्तंभ नाम सफेद स्थान है कि मैं सामान्य रूप से dplyr में बैकटिक साथ परिभाषित करेगा है।Rmarkdown: इनलाइन dplyr कोड लिखने यदि स्तंभ नाम बैकटिक के साथ परिभाषित रिक्त स्थान है
उदाहरण डाटा
```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)
library(dplyr)
library(knitr)
library(lazyeval)
df <- structure(list(1:3, 2:4), .Names = c("a", "b"), row.names = c(NA, -3L), class = "data.frame")
df <- df %>% select(`a a`=a, `b b`=b)
```
इनलाइन कोड हिस्सा
मैं `r df %>% filter(`a a` == 1) %>% select(`a a`) %>% as.numeric()`
की तरह कुछ कोशिश कर रहा हूँ, लेकिन मैं निम्नलिखित त्रुटि मिलती है: (
Error in base::parse(text = code, keep.source = FALSE) : <text>:2.0: unexpected end of input 1: df %>% filter(^ Calls: <Anonymous> ... inline_exec -> withVisible -> eval -> parse_only -> <Anonymous>
... बहुत स्पष्ट कारणों के लिए बैकटिक्स इनलाइन कोड खंड को समाप्त करते हैं)। मैं पूर्णांक गणनाओं के बाद कोड कोड में कॉलम का नाम बदल सकता हूं (मैं उन्हें तालिका के लिए स्वरूपित कर रहा हूं), लेकिन इसे तोड़ना निराशाजनक होगा।
महंगे lazyeval
समाधान
यह समस्या हल करती है r df %>% filter_(interp(~ which_column == 1, which_column = as.name("a a"))) %>% select_(as.name("a a")) %>% as.numeric()
, लेकिन वहाँ एक बेहतर तरीका हो गया है।
क्या आप बैक टिक के लिए एस्केप ऑपरेटर का उपयोग कर सकते हैं? –
क्या आप केवल सिंगल या डबल टिक का उपयोग कर सकते हैं? 'df%>% select ('a a' = a, 'b b' = b) 'मेरे लिए समान कार्य करता है (कम से कम कंसोल पर)। बैकटिक्स का उपयोग करने के लिए मुझे केवल * आवश्यकता है * संदर्भित (उपयोग नहीं कर रहा है) "विशेष" फ़ंक्शन जैसे '''%% '' '' '' '' ' – r2evans
या, ज़ाहिर है, आप केवल फैंसी कंप्यूटेशंस इनलाइन नहीं कर सकते हैं। 'Res = df%>% फ़िल्टर (\ 'aa \' == 1)%>% चुनें (\ 'aa \')%>% as.numeric() 'अपने खंड/ब्लॉक में और फिर' \ 'r res \ '' यह इनलाइन है। – Frank