Подтвердить что ты не робот

Rbind error: "имена не соответствуют предыдущим именам"

Как часть более крупной проблемы (добавление аргумента ,makeUniqueIDs в rbind.SpatialPolygonsDataFrame для ситуаций, когда идентификаторы многоугольников идентичны), я запускаю это странное сообщение из rbind:

> do.call("rbind",xd.small)
Error in match.names(clabs, names(xi)) : 
  names do not match previous names

Единственная другая информация, которую я мог найти на этом, был этот вопрос, что заставляет меня думать, что rbind тоже был в корне проблемы.

Я могу просто написать свою собственную функцию, подобную rbind, но, по-видимому, эта проверка match.names происходит по какой-то причине, и мне любопытно, что это такое.

4b9b3361

Ответ 1

Имена первого фрейма данных не соответствуют именам второго. Как указано в сообщении об ошибке.

> identical(names(xd.small[[1]]), names(xd.small[[2]]) )
[1] FALSE

Если вам не нужны имена 3-го или 4-го столбцов второго df, вы можете заставить их быть одинаковыми:

> names(xd.small[[1]]) <- names(xd.small[[2]]) 
> identical(names(xd.small[[1]]), names(xd.small[[2]]) )
[1] TRUE

Тогда все должно продолжаться успешно.

Ответ 2

достаточно легко использовать функцию unname():

data.frame <- unname(data.frame)

Ответ 3

rbind() требуется, чтобы оба имени объекта были одинаковыми. Например, имена первых объектов: ID Age, следующие имена объектов: ID Gender, если вы хотите использовать rbind(), он распечатает:

имена не соответствуют предыдущим именам

Ответ 4

Использовать код следующим образом:

mylist <- lapply(pressure, function(i)read.xlsx(i,colNames = FALSE))#
mydata <- do.call('rbind',mylist)#