Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/128.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R with()块结果可以在块外部使用吗?_R - Fatal编程技术网

R with()块结果可以在块外部使用吗?

R with()块结果可以在块外部使用吗?,r,R,对于具有长变量名和级别的数据集,我有大量的计算方法。由于attach是不受欢迎的,我想知道我是否可以使用with()块,但在关闭块后可以获得结果 下面是一个我正在询问的语句示例,但使用$连接器执行。缅因州不同湖泊类型的汞含量: Y_O=平均值(缅因州$Mercury[缅因州$Lake_类型==“渐趋性”]) Y_M=平均值(缅因州$水星[缅因州$湖泊类型==“中热带”]) Y_E=平均值(缅因州$Mercury[缅因州$Lake_Type==“Eutropic”]) 我发现读者很难看到我在讲什

对于具有长变量名和级别的数据集,我有大量的计算方法。由于attach是不受欢迎的,我想知道我是否可以使用
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