Доступ к Произвольным Столбцам от использования Кадра данных R с ()

Предположим, что у меня есть кадр данных со столбцом, имя которого хранится в переменной. Доступ к этому столбцу с помощью переменной является легкой нотацией скобки использования:

df <- data.frame(A = rep(1, 10), B = rep(2, 10))
column.name <- 'B'

df[,column.name]

Но не очевидно, как получить доступ к произвольному столбцу с помощью вызова для with(). Наивный подход

with(df, column.name)

эффективно оценивает column.name в среде вызывающей стороны. Как я могу задержать оценку достаточно это with() обеспечит те же результаты, которые дают скобки?

9
задан jogo 23 January 2016 в 10:04
поделиться

2 ответа

Вы можете использовать get:

with(df, get(column.name))
17
ответ дан 4 December 2019 в 11:41
поделиться

Вы используете 'with' для создания локализованного и временного пространства имен, внутри которого вы оцениваете некоторое выражение. В приведенном вами коде вы не передали выражение.

Например:

data(iris)   # this data is in your R installation, just call 'data' and pass it in

Обычно вы должны ссылаться на имена переменных во фрейме данных следующим образом:

tx = tapply(iris$sepal.len, list(iris$species), mean)

Если вы не сделаете этого:

attach(iris)

Проблема с использованием 'attach' заключается в вероятности столкновения пространств имен, поэтому вы должны помнить о вызове 'detach'

Гораздо чище использовать 'with':

tx = with( iris, tapply(sepal.len, list(species), mean) )

Итак, сигнатура вызова (неформально) такова: with( data, function() )

1
ответ дан 4 December 2019 в 11:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: