我正在嘗試在R中編寫一個函數,它將數據類中的物種列聚合在一起。 (爲了詳細闡述我在做什麼......我有一個數據框,有多個植物物種,適合多個地點和多年,有些物種被錯誤識別,所以我想分組到更多一般水平(例如,spp a和spp b在這些年中混在一起;所以我想創建一個名爲spp.ab的新列,其中spp a和b的數據集中在一起))。使用函數在R data.frame中添加一列
例子:
spp.a spp.b
1 0
2 3
0 4
3 2
4 5
我想最終與來自值從兩個物種顯示最大的單個列結束了:
spp.ab
1
3
4
3
5
我已經開始寫一個函數這是這樣做的;然而,我很擔心將新的列添加到我的數據集並刪除舊的列。有人能告訴我我的代碼有什麼問題嗎?
lump <- function(db, spp.list, new.spp) { #input spp.list as c('spp.a', 'spp.b', ...)
mini.db <- subset(db, select=spp.list);
newcol <- as.vector(apply(mini.db, 1, max, na.rm=T));
db$new.spp <- newcol
db <- db[,names(db) %in% spp.list]
return(db)
}
當我調用該函數本身
test <- lump(db, c('spp.a', 'spp.b'), spp.ab)
test
所有彈出是mini.db.我是否錯過了return()?
作爲參考,db是數據庫,spp.list是我想要聚集在一起的物種,而new.spp是我想要的新列名。
感謝您的幫助,
保羅
那麼'new.spp'是新列的名稱? –
正確,您可以通過將名稱放在引號中作爲函數的參數來調用它。例如,如果你想稱它爲el.conquistador,你可以輸入lump(db,c('spp.a','spp.b'),'el.conquistador') – logicForPresident