Ссылка на имена столбцов переменных в подмножестве в цикле for в R

#r

#r

Вопрос:

Я пытаюсь создать цикл for, который ссылается на другое имя столбца с каждой итерацией. Таблица данных, которую я задаю, называется «комбинированной», а столбцы, на которые я пытаюсь ссылаться, просто называются 1, 2, 3, вплоть до 84. Я надеюсь, что каждый выходной объект, созданный циклом for, вычислит максимальное значение в столбце i (в «Комбинированном») для каждого уникального значения в столбце «sci_name» (также в «Комбинированном»).).

Это то, что я придумал до сих пор:

 X <- c(1:84)

for (i in X) {
name <- paste("er", i, sep="_")
assign(name, Combined[,max(`i`), by=sci_name])
}
 

Этот код выполняется, но он просто присваивает одинаковые значения каждой позиции в каждом из выходных объектов er_ #, вместо того, чтобы фактически принимать максимальное значение для столбца i .

Вне цикла for я обнаружил, что этот код работает сам по себе, но не могу понять, как изменить номер заголовка столбца в цикле (и предпочел бы не выполнять все 84 итерации вручную):

 er_1 <- Combined[,max(`1`), by=sci_name]
 

Комментарии:

1. В цикле for вы можете сохранить значения в именованный список, а затем использовать list2env() .

Ответ №1:

Вы не предоставили никаких полезных данных, поэтому я буду использовать mpg набор данных:

 library(tidyverse)

mpg %>% 
    group_by(cyl) %>% 
    summarize(across(c(cty, hwy), max))
 

Это позволит организовать вывод в tibble.

Комментарии:

1. Это также работает само по себе, но, похоже, я не могу заставить его функционировать внутри цикла for. Я думаю, что проблема связана со ссылкой на число в качестве заголовка столбца.

2. В моем решении вам не нужен цикл for

3. Ах! Теперь я понимаю. Это работает отлично. Спасибо!