我有一个tibble和一个命名向量。我想使用向量名称复制命名向量中的所有列,同时保留原始名称。
我知道如何相当简单地重命名所有列:
library(dplyr)
named_vector <-
c("var1" = "x1",
"var2" = "x2",
"var3" = "x3")
tibble(x1 = 1:3, x2 = 1:3, x3 = 1:3, z = 68, zz = 69) %>%
rename(!!!named_vector)
#> # A tibble: 3 x 5
#> var1 var2 var3 z zz
#> <int> <int> <int> <dbl> <dbl>
#> 1 1 1 1 68 69
#> 2 2 2 2 68 69
#> 3 3 3 3 68 69
Run Code Online (Sandbox Code Playgroud)
由reprex 包(v0.3.0)于 2021 …
我在 R 中有一个...使用 tidyeval 的简单函数。是否可以将这些更改为字符串?
simple_paste <- function(...){
my_vars <- enquos(...)
paste(..., sep = "_x_")
}
Run Code Online (Sandbox Code Playgroud)
simple_paste(hello, world)
作为输出,我想得到"hello_x_world". 我也可以考虑使用glue函数 orstr_c代替paste,尽管我不确定这会更好。
我想知道是否有运行该功能的任何功能。
例如,如果我可以编写的最简单的函数是:
function(){
print("hello world")
}
Run Code Online (Sandbox Code Playgroud)
但是据我所知,“运行”此功能的唯一方法是运行以下命令:
my_fun <- function(){
print("hello world")
}
my_fun()
Run Code Online (Sandbox Code Playgroud)
有没有一种方法可以在不给函数一个对象的情况下实现此结果?直觉上,我认为这和它没什么不同%>%,但是我在思考如何做到这一点时遇到了麻烦。是否可以通过管道运行该函数而不给它自己的对象?
我有兴趣交换向量的名称和值
y <- c(a = "Apple", b = "Banana")
Run Code Online (Sandbox Code Playgroud)
相反,我希望代码创建等效于
y <- c(Apple = "a", Banana = "b")
Run Code Online (Sandbox Code Playgroud)
我看到有是invert在功能searchable包,但是这似乎并不像它的R第4版还没有被更新。
如何循环索引向量?
我有一个数字向量。我想一次索引这个向量(例如,i[1]、i[2] ...)。但是,在index_n > length(i)我希望索引再次“循环”回到向量之后。
i = c("cat", "dog", "ghost")
i[4] # 4 is 1 greater than than the length of the vector, i want to return the first element "cat"
## > NA
Run Code Online (Sandbox Code Playgroud)
有很多方法可以用逻辑语句来做到这一点。我想知道是否已经有一个功能可以做到这一点。
我已经适应在 R 和 RStudio 中使用新的本机管道。然而,当我直接通过管道进入View它时,会创建一个独特的新选项卡,该选项卡一直弄乱了我的窗口。是否有办法限制新的管道运算符仅更新单个选项卡,就像以前的管道运算符 ( %>%) 所做的那样?