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
происходит по какой-то причине, и мне любопытно, что это такое.
Ответы
Ответ 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)#