2015-09-14 4 views
1

У меня есть список data.frames и список пространственных данных. кадры имеют одинаковое количество столбцов и одинаковые имена. Теперь я изменил имена столбцов в (Normal) data.frames, хранящихся в списке data.frames, и хочу записать эти изменения в data.frames, хранящиеся в другом списке, (Spatial) data.frames.Назначить имена столбцов data.frames в списке data.frames для других (пространственных) data.frames в списке data.frames в R

Как я могу архивировать что-то подобное?

Некоторые примеры:

require (sp) 
mtcars.S <-mtcars 
coordinates(mtcars.S) <- c('gear', 'carb') 
mtcars.S$coords.x1 <- 12345 
mtcars.S$coords.x2 <- 12345 

attitude.S <- attitude 
coordinates(attitude.S) <- c('critical', 'advance') 
attitude.S$coords.x1 <- 12345 
attitude.S$coords.x2 <- 12345 

quakes.S <- quakes 
coordinates(quakes.S) <- c('lat', 'long') 
quakes.S$coords.x1 <- 12345 
quakes.S$coords.x2 <- 12345 


f.Names <- c('mtcars.S','attitude.S','quakes.S') 

listofSpatialDF <- mget(f.Names) 

b2DF <- function(x) { 
    as.data.frame(x) 
} 

list_DF <- lapply(listofSpatialDF,b2DF) 

coordsD <- function(x){ 
    x[,!names(x) %in% c("coords.x1","coords.x2")] 
} 

list_DF <- lapply(list_DF,coordsD) 

Затем некоторые имена столбцов заменяются в data.frames. Имена столбцов из одного списка data.frames должны быть записаны как имена столбцов другого списка (пространственных) data.frames.

То, что я пытался до сих пор является:

changeCOL <- function(x, y){ 
    names(y) 

} 

test<-mapply(changeCOL,x=list_DF,y=listofSpatialDF) 

Эта функция удалось зачитать имена столбцов различных data.frames и сохранить их под соответствующим именем. Но теперь я понятия не имею, как продолжить или решить эту проблему.

ответ

1

Вы имели право идея - я изменил ваша функция немного, и он должен работать сейчас:

changeCOL <- function(x, y){ 
    names(y) <- names(x) 
    return(y) 
} 

test<-mapply(changeCOL,x=list_DF,y=listofSpatialDF) 

# Test to show the names are the same now 
names(test[[1]])==names(list_DF[[1]]) 
[1] TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE TRUE 
+0

Большое спасибо, что код работает просто замечательно! Ну, и я думаю, мне придется научиться использовать return(), вероятно ... – Deset

Смежные вопросы