Как напечатать имена фреймов данных в списке с циклом for? - PullRequest
0 голосов
/ 09 ноября 2018

У меня есть список данных, таких как:

x <- c(1, 2, 3, 4, 5)
y <- c(5, 4, 3, 2, 1)
df1 <- data.frame(x)
df2 <- data.frame(y)
x <- list(df1, df2)

Я хочу напечатать имена фреймов данных в списке x с помощью цикла for, такого как:

for (i in x) {
  deparse(substitute(x[i]))
}

Но это не работает. Моя цель состоит в том, чтобы имена фреймов данных выводились в виде символов, таких как этот:

[1] df1
[2] df2

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 ноября 2018

Был очень полезный момент: использование x <- list(df1=df1, df2=df2) для сохранения имен фреймов данных в списке и использование функции names(). Вот код, который я использовал для окончательной печати имен фреймов данных в списке:

x <- c(1, 2, 3, 4, 5)
y <- c(5, 4, 3, 2, 1)
df <- data.frame(x, y)
df1 <- data.frame(x)
df2 <- data.frame(y)
x <- list(df1=df1, df2=df2)
for (i in 1:2) {
print(as.character(names(x)[i]))
}

И это распечатывает имена фреймов данных в списке.

0 голосов
/ 09 ноября 2018

Data.frames не имеют «имен». Переменная может указывать на data.frame, но data.frame может вообще существовать без имени (как если бы вы сделали x <- list(data.frame(x), data.frame(y))). Таким образом, ваш data.frame не назван df1; df1 - это имя переменной, которая указывает на data.frame.

Если вы помещаете переменную в список, значение переменной помещается в список, а не само имя переменной. Поэтому, если вы хотите сохранить имя переменной, которая изначально содержала объект в списке, вам необходимо сохранить имя в списке. Один из распространенных способов сделать это -

x <- list(df1=df1, df2=df2)

Затем вы можете установить имена с помощью names(x). Если вы хотите увидеть другие способы создания списков, в которых хранятся имена объектов, см. Существующий вопрос: Можно ли создавать списки, которые сами именуют на основе имен входных объектов?

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