Я бы захватил локальную среду,
xy <- data.frame(x=1:10,y=1:10)
plotfunc <- function(Data, YMul = 2){
.e <- environment()
ggplot(Data, aes(x = x, y = y*YMul), environment = .e) + geom_line()
}
plotfunc(xy)
Вы можете assign
после фильтра с помощью lambda
:
df.loc[df.FOO.gt(0)].assign(BAZ = lambda x: x.BAR+'z')
# FOO BAR BAZ
#1 1 b bz
#2 2 c cz
Также можно назначить сначала, а затем фильтр, но это не будет столь же эффективным, если отфильтровать много строк: ]
df.assign(BAZ = df.BAR+'z').loc[df.FOO.gt(0)]