RStudio keyboard shortcut to wrap / unwrap code in parentheses? - r

Sometimes it's preferable to wrap commands in ( and ) so that the output prints to console
Random example:
(logical_sample <- c(0,1,0,1,0,1,0,1,0))
(sample_mean <- mean(logical_sample))
(sample_st_deviation <- sd(logical_sample))
(n <- length(logical_sample))
Is there a quick RStudio keyboard shortcut for un/parenthesising the same way we can use command + shift + c to un/comment?

According to the official list...
As you can see on the official RStudio Keyboard Shortcuts list (link here) there is none, but you can use Ctrl + P to jump to the matching parenthesising, which can help speed things up.
Hope this helps.

Related

How to search previously executed commands in the Julia REPL?

Is there a quick way to search old commands which were run in the Julia REPL? Using the up arrow to go back in time seems to have a limit on its history and it is also quite cumbersome.
One of the five REPL models available in Julia is the "Search mode" which allows you to search through previously executed commands from the REPL. You can click "Control" + "r" to open search mode like is shown below:
(reverse-i-search)`':
There is also a forward search available with "Control" + "s". You can read more about Julia's REPL Search mode here: https://docs.julialang.org/en/v1/stdlib/REPL/#Search-modes
In addition to "real" search, you can also enter the beginning of a previous line and scroll up in the history (using ↑ or Ctrl-P) to switch between all previously entered lines starting with the same prefix.
So, if you had previously entered x = some_complicated_expression, you can write x = and go up until the line you were looking for appears.
Checkout: https://kristofferc.github.io/OhMyREPL.jl/latest/features/fzf/#Fuzzy-REPL-history-search
Which will be easier to use than reverse-i-search

Keyboard shortcut for inserting roxygen #' comment start

This question might be over-answered but I could not find one. Basically I am using RStudio and the keyboard shortcut cmd + shift + c for inserting comments. Is there an other combination to insert directly the roxygen tags #' ? Or a way to modify RStudio to tell it to add the ' when I press cmd + shift + c?
You could use an RStudio addin, you'll need a fairly recent version of RStudio. I've just created an RStudio addin that comments/uncomments using roxygen2 tags, i.e. works just like code commenting, but with #'. The addin is hosted on github.
Just install and attach a convenient keyboard shortcut.
If you are interested in other available addins, see the addinmanager addin.
This isn't exactly what you're looking for. But you can add an ROxygen2 skeleton for a function by placing your cursor inside the function then pressing ctr+alt+shift+R. Then if you hit enter in the ROxygen2 codeblock it will automatically add the backtick. So an alternate workflow, edit the function, then insert the skeleton and do the documentation that way.
Rstudio find/replace
Select text to comment out, tick regex option and specify:
find: ^(.+)
replace: #' \1
Above means to find all characters (.+) following beginning of the line ^ and replace them by the #' and the first captured group \1.
vim find/replace
I find this option the easiest as I use Rstudio in vim mode. To replace text one only need to:
select text
go to the "command-line mode" by using : key
enter s/^/#' and hit enter.
s/ stands for "substitute", ^ stands for beginning of the line and #' is the text we are inserting.
This is not a default Rstudio option. Make sure you have Keybindings set to "vim" in RStudio "Global Options"
The absolute simplest answer is in the comments on the addins answer above and deserves its own billing (with attribution):
Rstudio does have column selection, to get multiple cursors alt + mouse to select, or ctrl + alt and the arrow keys, then keys move forward and back by words/lines work as expected. – Peter Apr 16 '16 at 23:55
[ETA: On Mac, ctrl + option + arrow keys or option + mouse.]
#Peter nice. in that case you could just make a chunk of cursors at the beginning of the line and and type in #' . I doubt roxygen comments are used enough to warrant a dedicated keyboard shortcut, but it wouldn't hurt to have I guess – rawr Apr 17 '16 at 1:26

Split Screen in Atom Editor

Is there a way (plugin or something) to use split screen in the Atom Editor?
I've looked inside the menus, but I can't find any related options.
Using the command palette
Open the command palette with cmd + shift + p (OSX) or ctrl + shift + p (Linux/Windows) and type "split". You'll see options for Up, Down, Left, and Right split.
Using keyboard shortcuts
Split the current tab in a direction with the following shortcuts
Up       cmd / ctrl + k then ↑
Down  cmd / ctrl + k then ↓
Left     cmd / ctrl + k then ←
Right   cmd / ctrl + k then →
You can close an active split pane with cmd / ctrl + k then cmd / ctrl + w.
Move between panes
If you want to move between open panes (with the keyboard) you have to modify your keymap file. Go to Atom -> Open Your Keymap and include this:
'body':
'cmd-alt left': 'window:focus-pane-on-left'
'cmd-alt right': 'window:focus-pane-on-right'
'cmd-alt up': 'window:focus-pane-above'
'cmd-alt down': 'window:focus-pane-below'
'cmd-alt-2': 'pane:split-right'
'cmd-alt-3': 'pane:split-down'
This is my personal setup. I was used to Sublime's default cmd + alt + arrow. Change the left side commands to your personal preference.
Note
You need to press cmd-alt once, release, and then press the arrow button. Otherwise it won't work.
I found this at Split Windows - issue #64:
It seems like Atom already has support for splitting windows (cmd-k + arrow key)
Right click anywhere on an open file, select "split left"
If it duplicates a file, "x" it out.
Result:
I have created a beginners cheat sheet for Atom that lists some introductory notes and keyboard shortcut commands etc. Its on github #
https://github.com/pd-gmit/atom-cheatsheet/blob/master/atom_cheatsheet.md
You could always just right click anywhere on the file and the split options are available in the context menu.

Rstudio execute folded lines

this might be nastily easy to answer:
How do I execute folded coded and in particular functions, for-loops, and alike in RStudio?
I have perused the documentary pages twice. nada.
EDIT:
But that doesn't work: If I execute the assign of a function:
ff <- function(x) {x+1 return(x)}
I get this return in non-folded manner: strg+enter
ff <- function(x) {x+1
+ return(x)}
and this when I execute the folded lines by strg+enter
> return(x)}
> Error: unexpected '}' in "return(x)}"+ return(x)}
You want to add a ; between expressions:
ff <- function(x) {x+1; return(x)}
Btw, my answer has nothing to do with RStudio, it rather answers:
How do you execute multiple statements per code block enclosed by {}
when the statements are in one line?
Only an extended comment: I'm guessing there is potential German-English confusion here. In English the three "special keys" on a Windows keyboard are "control" , "alt", and "windows", whereas on a Mac keyboard they "control", option", and "command". Originally I thought you might mean 'string+enter' or 'alt+enter' but on the basis of googling "strg+enter keyboard German" I'm thinking you mean "control-enter".
After scrolling through the keyboard shortcuts in the RStudio documentation, I'm wondering if rather than 'ctrl-enter', you really want 'windows+enter', although you will still need the semicolon, if those characters are all on the same line, or whatever it might be called in German.

Multiline Comment Workarounds?

I (sort of) already know the answer to this question. But I figured it is one that gets asked so frequently on the R Users list, that there should be one solid good answer. To the best of my knowledge there is no multiline comment functionality in R. So, does anyone have any good workarounds?
While quite a bit of work in R usually involves interactive sessions (which casts doubt on the need for multiline comments), there are times when I've had to send scripts to colleagues and classmates, much of which involves nontrivial blocks of code. And for people coming from other languages it is a fairly natural question.
In the past I've used quotes. Since strings support linebreaks, running an R script with
"
Here's my multiline comment.
"
a <- 10
rocknroll.lm <- lm(blah blah blah)
...
works fine. Does anyone have a better solution?
You can do this easily in RStudio:
select the code and click CTR+SHIFT+C
to comment/uncomment code.
This does come up on the mailing list fairly regularly, see for example this recent thread on r-help. The consensus answer usually is the one shown above: that given that the language has no direct support, you have to either
work with an editor that has region-to-comment commands, and most advanced R editors do
use the if (FALSE) constructs suggested earlier but note that it still requires complete parsing and must hence be syntactically correct
A neat trick for RStudio I've just discovered is to use #' as this creates an self-expanding comment section (when you return to new line from such a line or insert new lines into such a section it is automatically comment).
[Update] Based on comments.
# An empty function for Comments
Comment <- function(`#Comments`) {invisible()}
#### Comments ####
Comment( `
# Put anything in here except back-ticks.
api_idea <- function() {
return TRUE
}
# Just to show api_idea isn't really there...
print( api_idea )
`)
####
#### Code. ####
foo <- function() {
print( "The above did not evaluate!")
}
foo()
[Original Answer]
Here's another way... check out the pic at the bottom. Cut and paste the code block into RStudio.
Multiline comments that make using an IDE more effective are a "Good Thing", most IDEs or simple editors don't have highlighting of text within simple commented -out blocks; though some authors have taken the time to ensure parsing within here-strings. With R we don't have multi-line comments or here-strings either, but using invisible expressions in RStudio gives all that goodness.
As long as there aren't any backticks in the section desired to be used for a multiline comments, here-strings, or non-executed comment blocks then this might be something worth-while.
#### Intro Notes & Comments ####
invisible( expression( `
{ <= put the brace here to reset the auto indenting...
Base <- function()
{ <^~~~~~~~~~~~~~~~ Use the function as a header and nesting marker for the comments
that show up in the jump-menu.
--->8---
}
External <- function()
{
If we used a function similar to:
api_idea <- function() {
some_api_example <- function( nested ) {
stopifnot( some required check here )
}
print("Cut and paste this into RStudio to see the code-chunk quick-jump structure.")
return converted object
}
#### Code. ####
^~~~~~~~~~~~~~~~~~~~~~~~~~ <= Notice that this comment section isnt in the jump menu!
Putting an apostrophe in isn't causes RStudio to parse as text
and needs to be matched prior to nested structure working again.
api_idea2 <- function() {
} # That isn't in the jump-menu, but the one below is...
api_idea3 <- function() {
}
}
# Just to show api_idea isn't really there...
print( api_idea )
}`) )
####
#### Code. ####
foo <- function() {
print( "The above did not evaluate and cause an error!")
}
foo()
## [1] "The above did not evaluate and cause an error!"
And here's the pic...
I can think of two options. The first option is to use an editor that allows to block comment and uncomment (eg. Eclipse). The second option is to use an if statement. But that will only allow you to 'comment' correct R syntax. Hence a good editor is the prefered workaround.
if(FALSE){
#everything in this case is not executed
}
If find it incredible that any language would not cater for this.
This is probably the cleanest workaround:
anything="
first comment line
second comment line
"
Apart from using the overkilled way to comment multi-line codes just by installing RStudio, you can use Notepad++ as it supports the syntax highlighting of R
(Select multi-lines) -> Edit -> Comment/Uncomment -> Toggle Block Comment
Note that you need to save the code as a .R source first (highlighted in red)
I use vim to edit the R script.
Let's say the R script is test.R, containing say "Line 1", "Line 2", and "Line 3" on 3 separate lines.
I open test.R on the command line with Vim by typing "vim test.R".
Then I go to the 1st line I want to comment out, type "Control-V", down arrow to the last line I want to comment out, type a capital I i.e. "I" for insert, type "# ", and then hit the Escape key to add "# " to every line that I selected by arrowing down. Save the file in Vim and then exit Vim by typing ":wq". Changes should show up in Rstudio.
To delete the comments in Vim, start at the first line on top of the character "#" you want to delete, again do "Control-V", and arrow down to the last line you want to delete a "#" from. Then type "dd". The "#" signs should be deleted.
There's seconds-worth of lag time between when changes to test.R in Vim are reflected in Rstudio.
Now there is a workaround, by using package ARTofR or bannerCommenter
Examples here:
In RStudio an easy way to do this is to write your comment and once you have used CTRL + Shift + C to comment your line of code, then use CTRL + SHIFT + / to reflow you comment onto multiple lines for ease of reading.
In RStudio you can use a pound sign and quote like this:
#' This is a comment
Now, every time you hit return you don't need to add the #', RStudio will automatically put that in for you.
Incidentally, for adding parameters and items that are returned, for standardization if you type an # symbol inside those comment strings, RStudio will automatically show you a list of codes associated with those comment parameters:
#' #param tracker_df Dataframe of limit names and limits
#' #param invoice_data Dataframe of invoice data
#' #return return_list List of scores for each limit and rejected invoice rows

Resources