Python 在R中就地赋值而不写入变量名两次?
我通常会尽量避免代码重复,即使是在单行中。然而,我发现自己经常在R中写这样的句子:Python 在R中就地赋值而不写入变量名两次?,python,r,Python,R,我通常会尽量避免代码重复,即使是在单行中。然而,我发现自己经常在R中写这样的句子: # R code my_long_vector_var_name <- append(my_long_vector_var_name, new_var) my_long_int_name <- my_long_int_name + 1 对于第二个问题,表明在R中确实没有可比的“短”方式。然而,这个问题已经超过6年了。在R中仍然没有更好的方法来实现这一点吗?magrittr有一个%%操作符,用于管道和
# R code
my_long_vector_var_name <- append(my_long_vector_var_name, new_var)
my_long_int_name <- my_long_int_name + 1
对于第二个问题,表明在R中确实没有可比的“短”方式。然而,这个问题已经超过6年了。在R中仍然没有更好的方法来实现这一点吗?
magrittr
有一个%%
操作符,用于管道和更新对象
library('magrittr')
v <- c(1, 2)
v %<>% append(3)
v
#> [1] 1 2 3
v %<>% add(1)
v
#> [1] 2 3 4
library('magrittr')
v[1]1 2 3
v%%添加(1)
v
#> [1] 2 3 4
在某种程度上,对于第一个问题,您可以使用dplyr包中的%>%运算符
library(dplyr)
my_long_vector<-rep(c("A","B","C"),10)%>%c("NEW VALUE")
库(dplyr)
我的长向量%c(“新值”)
我认为没有捷径,没有。一般来说,R对象是不可变的,在修改时会被复制,必须通过指定副本来显式覆盖原始变量。如果你经常增加向量,那你就错了。@Roland:我这样做主要是为了数据清理:“如果表包含某个元素,将其添加到处理向量…”“如果我使用实时数据,将此列添加到因子列表…”。我实际上不会增加任何数据帧/数据向量;-)当dplyr
使用管道时,它来自magrittr
包,该包具有更合适的运算符(参见Paul的答案)虽然我更喜欢Python点表示法(v.append(3)),但这似乎正是我在R中寻找的。
library(dplyr)
my_long_vector<-rep(c("A","B","C"),10)%>%c("NEW VALUE")