R-使用`[[<;-`和特殊赋值操作

R-使用`[[<;-`和特殊赋值操作,r,R,当使用dplyr/magrittr包时,我发现colnames%groupby(avar)%%>%摘要(nrec=n(),mb=mean(bvar))%%>% `colnames%group_by(avar)%%>%summary(nrec=n(),mb=mean(bvar)) colnames(mydataframe)在构建类似这样的复杂表达式时,可以使用pryr::ast函数,它向您显示所做操作的确切代码结构。我认为您只创建了两个不同的表达式: library(pryr) # rm(lis

当使用
dplyr
/
magrittr
包时,我发现
colnames%groupby(avar)%%>%摘要(nrec=n(),mb=mean(bvar))%%>%
`colnames%group_by(avar)%%>%summary(nrec=n(),mb=mean(bvar))

colnames(mydataframe)在构建类似这样的复杂表达式时,可以使用pryr::ast函数,它向您显示所做操作的确切代码结构。我认为您只创建了两个不同的表达式:

library(pryr)

# rm(list=ls())
ctestlist <- btestlist <- atestlist <- list('val1', 'val2', 'val3')

# mehtod 1
# --------
ast(atestlist[[4]] <- "val4")
# gives (spaces in console are important!): 
# > ast(atestlist[[4]] <- "val4")
# \- ()
# \- `<-
#   \- ()
# \- `[[
#   \- `atestlist
#   \-  4
# \-  "val4" 

atestlist[[4]] <- "val4"

# method 2
# --------
ast(`<-` (`[[`(btestlist, 4), value = "val4" ))
# > ast(`<-` (`[[`(btestlist, 4), value = "val4" ))
# \- ()
# \- `<-
#   \- ()
# \- `[[
#   \- `btestlist
#   \-  4
# \-  "val4"

`<-` (`[[`(btestlist, 4), value = "val4" ) # works like atestlist[[4]] <- "val4"

# this is slightly different:
# ---------------------------
ast(`[[<-`(ctestlist, 4, value = "val4"))
库(pryr)
#rm(list=ls())

ctestlist不确定第二段代码的作用以及为什么它与第一段代码等效。第二段代码执行一些分组和汇总,但它会更改原始数据帧的名称,而不是处理后的名称。如果原始数据帧的列数超过3列,则会产生错误。第一段代码会打印分组和汇总的数据帧使用您选择的名称创建数据帧,而不在原始数据帧上保存/更改任何内容。很可能
[[研究语言定义:您没有使用
[[@r.user.05apr]创建相同的表达式。尽管如此,如果
长度(atestlist),OP的第二个表达式“有效”OP没有使用您的方法2,而是您在最后提到的“稍微不同”的东西,对吗?第二个方法创建的表达式与
atestlist[[4]]相同
mydataframe %>% group_by(avar) %>% summarise(nrec = n(), mb = mean(bvar))
colnames(mydataframe) <- c('avar2', 'nrec2', 'mb2')
atestlist <- list('val1', 'val2', 'val3')
`[[<-`(atestlist, 4, value = 'val4')
atestlist[[4]] <- 'val4'
library(pryr)

# rm(list=ls())
ctestlist <- btestlist <- atestlist <- list('val1', 'val2', 'val3')

# mehtod 1
# --------
ast(atestlist[[4]] <- "val4")
# gives (spaces in console are important!): 
# > ast(atestlist[[4]] <- "val4")
# \- ()
# \- `<-
#   \- ()
# \- `[[
#   \- `atestlist
#   \-  4
# \-  "val4" 

atestlist[[4]] <- "val4"

# method 2
# --------
ast(`<-` (`[[`(btestlist, 4), value = "val4" ))
# > ast(`<-` (`[[`(btestlist, 4), value = "val4" ))
# \- ()
# \- `<-
#   \- ()
# \- `[[
#   \- `btestlist
#   \-  4
# \-  "val4"

`<-` (`[[`(btestlist, 4), value = "val4" ) # works like atestlist[[4]] <- "val4"

# this is slightly different:
# ---------------------------
ast(`[[<-`(ctestlist, 4, value = "val4"))