R 为什么内部调用中的lappy与内部调用中的变量赋值不同?

R 为什么内部调用中的lappy与内部调用中的变量赋值不同?,r,with-statement,r-factor,R,With Statement,R Factor,考虑: notBroken<-within(mtcars, { gear<-as.factor(gear) cyl<-as.factor(cyl)}) str(notBroken) 显示气缸和档位已成为所需的因素。然而,这: broken<-within(mtcars,lapply(list(gear,cyl),as.factor)) str(broken) 为什么? 我怀疑这可能与与(mtcars,gear)如何显示中的将gear视为mtcars$gear而

考虑:

notBroken<-within(mtcars, {
  gear<-as.factor(gear)
  cyl<-as.factor(cyl)})
str(notBroken)
显示
气缸
档位
已成为所需的因素。然而,这:

broken<-within(mtcars,lapply(list(gear,cyl),as.factor))
str(broken)
为什么?


我怀疑这可能与
与(mtcars,gear)
如何显示
中的
gear
视为
mtcars$gear
而不是
mtcars[“gear”]
有关,但这不是一个完整的答案。我试图以这种方式做的事情可能吗?

这是因为
lappy()
没有将输出分配给
损坏的
齿轮
气缸
(例如,
损坏的
)的变量

broken<-within(mtcars,lapply(list(gear,cyl),as.factor))
str(broken)
> str(broken)
'data.frame':   32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: num  4 4 4 3 3 3 3 4 4 4 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
broken<-within(mtcars, gear <- unlist(lapply(list(gear), as.factor)))
str(broken)
'data.frame':   32 obs. of  11 variables:
 $ mpg : num  21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
 $ cyl : num  6 6 4 6 8 6 8 4 4 6 ...
 $ disp: num  160 160 108 258 360 ...
 $ hp  : num  110 110 93 110 175 105 245 62 95 123 ...
 $ drat: num  3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
 $ wt  : num  2.62 2.88 2.32 3.21 3.44 ...
 $ qsec: num  16.5 17 18.6 19.4 17 ...
 $ vs  : num  0 0 1 1 0 1 0 1 1 1 ...
 $ am  : num  1 1 1 0 0 0 0 0 0 0 ...
 $ gear: Factor w/ 3 levels "3","4","5": 2 2 2 1 1 1 1 2 2 2 ...
 $ carb: num  4 4 1 1 2 1 4 2 2 4 ...
x <- with(mtcars, lapply(list(gear, cyl), as.factor))
str(x)
List of 2
 $ : Factor w/ 3 levels "3","4","5": 2 2 2 1 1 1 1 2 2 2 ...
 $ : Factor w/ 3 levels "4","6","8": 2 2 1 2 3 2 3 1 1 2 ...