R with()块结果可以在块外部使用吗?
对于具有长变量名和级别的数据集,我有大量的计算方法。由于attach是不受欢迎的,我想知道我是否可以使用R with()块结果可以在块外部使用吗?,r,R,对于具有长变量名和级别的数据集,我有大量的计算方法。由于attach是不受欢迎的,我想知道我是否可以使用with()块,但在关闭块后可以获得结果 下面是一个我正在询问的语句示例,但使用$连接器执行。缅因州不同湖泊类型的汞含量: Y_O=平均值(缅因州$Mercury[缅因州$Lake_类型==“渐趋性”]) Y_M=平均值(缅因州$水星[缅因州$湖泊类型==“中热带”]) Y_E=平均值(缅因州$Mercury[缅因州$Lake_Type==“Eutropic”]) 我发现读者很难看到我在讲什
with()
块,但在关闭块后可以获得结果
下面是一个我正在询问的语句示例,但使用$
连接器执行。缅因州不同湖泊类型的汞含量:
Y_O=平均值(缅因州$Mercury[缅因州$Lake_类型==“渐趋性”])
Y_M=平均值(缅因州$水星[缅因州$湖泊类型==“中热带”])
Y_E=平均值(缅因州$Mercury[缅因州$Lake_Type==“Eutropic”])
我发现读者很难看到我在讲什么
我想这样做:
与(缅因州、{
YGrand使用aggregate
对列表中元素定义的组应用函数:
> aggregate(mtcars$hp, list(cyl = mtcars$cyl) ,mean)
cyl x
1 4 82.63636
2 6 122.28571
3 8 209.21429
使用aggregate
对列表中元素定义的组应用函数:
> aggregate(mtcars$hp, list(cyl = mtcars$cyl) ,mean)
cyl x
1 4 82.63636
2 6 122.28571
3 8 209.21429
下面类似的方法可能会奏效,但我会找到另一种方法
x = with(mtcars, {
c_all = mean(mpg)
c_6 = mean(mpg[cyl == 6])
c_4 = mean(mpg[cyl == 4])
c_8 = mean(mpg[cyl == 8])
data.frame(c_all, c_4, c_6, c_8)
})
list2env(x, envir = .GlobalEnv)
c_4
#[1] 26.66364
c_6
#[1] 19.74286
c_8
#[1] 15.1
c_all
#[1] 20.09062
下面类似的方法可能会奏效,但我会找到另一种方法
x = with(mtcars, {
c_all = mean(mpg)
c_6 = mean(mpg[cyl == 6])
c_4 = mean(mpg[cyl == 4])
c_8 = mean(mpg[cyl == 8])
data.frame(c_all, c_4, c_6, c_8)
})
list2env(x, envir = .GlobalEnv)
c_4
#[1] 26.66364
c_6
#[1] 19.74286
c_8
#[1] 15.1
c_all
#[1] 20.09062
您是否尝试过运行此代码?会发生什么情况?您可能会尝试您是否考虑过将对象存储在列表中,然后从列表中访问对象?列表提供了在其中存储不同类对象的灵活性。您真的想将它们作为单独的变量吗?扩展性不太好…即使仅使用两个以上的湖类型,这也会我会用tapply
或aggregate
Y=with(缅因州,tapply(Mercury,Lake_Type,mean))
很好地工作,并给出一个命名向量,你可以这样做,例如,Y[“寡向性”]
。感谢大家。完美的答案!@CephBirk:That您是否尝试运行此代码?会发生什么?您可以尝试您是否考虑将对象存储在列表中,然后从列表中访问对象?列表提供了灵活性,可以在其中存储不同类别的对象。您真的希望这些对象作为单独的变量吗?不可缩放非常好……即使再加上几个湖泊类型,这也会很快变老。我会使用tapply
或aggregate
Y=with(缅因州,tapply(Mercury,Lake_Type,mean))
很好地工作,并给出一个命名向量,然后你可以这样做,例如Y[“寡致性”]
。感谢大家。完美的答案!@CephBirk:That