2015-09-14 58 views
1

我有一個data.frames列表和一個spatial.data列表。幀都具有相同的列數和相同的名稱。現在,我更改了存儲在data.frames列表中的(Normal)data.frames中的一些列名稱,並希望將這些更改寫入存儲在另一個列表(Spatial)data.frames中的data.frames。將Data.frames的列表名稱分配給R中的data.frames列表中的其他(Spatial)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列表中的列名稱應該寫爲(Spatial)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

相關問題