Цикл для просмотра всех данных в R - PullRequest
0 голосов
/ 26 октября 2018

Попытка написать цикл для открытия всех фреймов данных в отдельных окнах в R

У меня есть следующий код, который не работает, конечно:

for(i in ls()){
View(i)
}

Это просто открывает окно просмотра, где i является именем фрейма данных.

Я тоже пытался безуспешно.

Любые советы

Привет

Ответы [ 2 ]

0 голосов
/ 26 октября 2018
df1 <- mtcars
df2 <- mtcars
df3 <- mtcars

lapply(ls(),function(x){View(get(x),x);NULL})

используйте аргумент заголовка View для получения значимых названий заголовков.

0 голосов
/ 26 октября 2018

ls() возвращает вектор символов с именами объектов в вашей рабочей области. Давайте запустим этот пример в новом сеансе R:

x <- 1:4
y <- data.frame(x = x, y = 2*x)

ls()
[1] "x" "y"

Теперь, если вы перебираете ls(), вы перебираете вектор символов, а не фактическое рабочее пространство. (Я использую print вместо View, чтобы перехватить вывод цикла)

for(i in ls()){
  print(i)
}

[1] "x"
[1] "y"

Вы можете исправить это, используя get, но вам нужно использовать lapply в качестве цикла, при котором вывод перезаписывается в каждой итерации:

lapply(ls(), function(i) {
  View(get(i))
})

Или вы используете mget(ls()), чтобы сначала получить объекты, а затем применить View к нему:

lapply(mget(ls()), View)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...