Необходимость доступа к переменным из родительского объекта внутри дочернего объекта без глобальной области видимости - PullRequest
0 голосов
/ 25 марта 2011

Позвольте мне попробовать это снова, я собираюсь опустить точные данные / пример и просто пройтись по тому, что мне нужно для достижения.

Мне нужно применить функцию к строкам данных.кадр, это легко.Затем мне нужно получить некоторые переменные внутри этой функции, используя data.frame, который был передан ей.Наконец, я хотел бы применить новую функцию к подмножеству data.frame и использовать производные переменные в новой функции.

Может кто-нибудь, пожалуйста, скажите мне лучший способ сделать это, а не глобальноопределяя область видимости каждой из моих переменных (var1, var2)?

cpt <- a.data.frame

query.db <- function(another.data.frame){
        var1 <- some.values
        var2 <- some.other.values
        apply(cpt[var1,], 1, calc.enrichment) #calc.enrichment needs to access var1, var2!
}

Я попытался написать функцию calc.enrichment как пользовательскую функцию, а не вне области видимости, но мой список аргументов (var1, var2)не были признаны.Спасибо за любую помощь.

1 Ответ

1 голос
/ 25 марта 2011

Этот глупый пример работает для меня и, кажется, обращается к тому, что вы ищете. Мы используем var1 для индексации в столбцах data.frame, используемого в функции apply, как вы сделали. var2 - это просто стандартное отклонение первого столбца data.frame, переданного ему. Я предполагаю, что ваш реальный пример делает что-то немного более полезное.

cpt <- data.frame(a = rnorm(5), b = rnorm(5), c = rnorm(5))
another.data.frame <- data.frame(d = rnorm(5), e = rnorm(5), f = rnorm(5))

query.db <- function(dat, outer.dat) {
  var1 <- sample(1:nrow(dat), sample(1:nrow(dat), 1, FALSE), FALSE)
  var2 <- sd(dat[, 1])

  apply(outer.dat[var1 ,], 1, function(x) apples = x * sin(var2) / cos(var2) ^ 2)

}


query.db(another.data.frame, cpt)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...