Как удалить первую строку из нескольких фреймов данных? - PullRequest
0 голосов
/ 07 мая 2019

У меня есть несколько фреймов данных, и я хотел бы удалить первую строку во всех них.

Я попытался использовать цикл for, но не могу понять, что я делаю неправильно

for (i in cities){

i <- i[-1, ]

}

Я получаю следующий код ошибки:

Ошибка в i [-1,]: неверное количество измерений

Ответы [ 2 ]

1 голос
/ 07 мая 2019

Если мы предположим, что единственными объектами в вашем рабочем пространстве являются кадры данных, это может быть успешным:

cities <- objects() )
for (i in cities) { assign(i, get(i)[-1,])}

Объяснение:

Две вещи неверны с исходными кодами:

Один уже упоминался в комментариях."df" - это не то же самое, что df.Вам необходимо использовать get, чтобы преобразовать символьное значение в «истинное» R-имя, которое используется для получения объекта с таким именем.Результат object() является только символьным значением.В R термин «имя» означает «языковой объект».Смотрите страницу помощи: ?mode.(Существует потенциальная путаница с именами строк и столбцов, которые всегда являются «символьными» классами.) Это не похоже на SAS, который является языком макросов, у которого нет такого различия.

Вторая ошибка - попытка заменить i в левой части <-.Не удалось бы, даже если бы вы работали с реальными именами R.Функция assign предназначена для обработки символьных значений, которые затем преобразуются в R имен.

1 голос
/ 07 мая 2019

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

Вот что вам нужно:

for (i in cities){
 tmp <- get(i)    # load the actual table
 tmp <- tmp[-1, ] # remove first column
 assign(i, tmp)   # re-assign table to original table name
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...