Можно ли использовать результаты блока () вне блока? - PullRequest
0 голосов
/ 26 марта 2019

У меня есть масса средств, которые я хочу вычислить для набора данных с длинными именами и уровнями переменных. Поскольку метод attach не одобряется, мне интересно, могу ли я использовать блок with(), но результаты будут доступны после его закрытия.

Вот пример операторов, которые я спрашиваю, но которые выполняются с $ коннекторами. Уровни ртути из различных типов озер в штате Мэн:

Y_O=mean(Maine$Mercury[Maine$Lake_Type=="Oligotropic"])
Y_M=mean(Maine$Mercury[Maine$Lake_Type=="Mesotropic"])
Y_E=mean(Maine$Mercury[Maine$Lake_Type=="Eutropic"])

Мне трудно читателям понять, о чем я.

Я бы хотел сделать это:

with(Maine, {
  YGrand <- mean(Mercury)
  Y_O <- mean(Mercury[Lake_Type == "Oligotropic"])
  Y_M <- mean(Mercury[Lake_Type == "Mesotropic"])
  Y_E <- mean(Mercury[Lake_Type == "Eutropic"])
})

Я уже превысил предел моей страницы для этой главы, поэтому у меня нет места для введения каналов. В глубине души я, кажется, помню, что кто-то использовал другой оператор, кроме <- в назначениях, которые подняли результаты до обычного уровня пользователя. Что-то подобное существует?

Ответы [ 2 ]

2 голосов
/ 26 марта 2019

Используйте aggregate, чтобы применить функцию к группам, определенным элементами в списке:

> aggregate(mtcars$hp, list(cyl = mtcars$cyl) ,mean)
  cyl         x
1   4  82.63636
2   6 122.28571
3   8 209.21429
0 голосов
/ 26 марта 2019

может сработать что-то вроде ниже, но я бы нашел альтернативный подход

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...