2016-07-27 25 views
0

這是我的數據幀:功能和環路上柱和獨特的ID

dput(fase1_M2) 
structure(list(CO2 = c(1300L, 1300L, 1300L), Meso = structure(c(1L, 
1L, 1L), .Label = c("M2", "M3", "M4", "M5", "M6", "M7", "M8"), class = "factor"), 
    Days = structure(c(18L, 8L, 2L), .Label = c("T1", "T-1", 
    "T11", "T13", "T15", "T17", "T19", "T-2", "T20", "T21", "T22", 
    "T23", "T24", "T25", "T27", "T29", "T3", "T-3", "T5", "T7", 
    "T9"), class = "factor"), Day = -3:-1, Total.abundance.cell.l = c(8298255, 
    78682211, 175454990), Tot.dinoflagellate.cell.l = c(879200L, 
    1101931L, 4293575L), Tot.diatoms.cell.l = c(7243215, 77580280, 
    171161415), Tot.other.cell.l = c(175840L, 0L, 0L), Amphidinium = c(NA, 
    NA, NA), Karenia.mikimotoi = c(NA, NA, NA), Heteocapsa = c(NA, 
    NA, NA), Gymnodiales = c(879199.999999999, 1101930.66666667, 
    4293574.68013468), Peridinella = c(NA, NA, NA), Prorocentrum = c(NA_real_, 
    NA_real_, NA_real_), Gyrodinium = c(NA, NA, NA), Scripsiella = c(NA, 
    NA, NA), Protoperidinium.bipes = c(NA, NA, NA), Protoperidinium = c(NA, 
    NA, NA), Mesoporos.perforatus = c(NA_real_, NA_real_, NA_real_ 
    ), Ceratium.fusus = c(NA, NA, NA), Katodinium = c(NA, NA, 
    NA), Gymnodinium = c(NA, NA, NA), Ceratium.lineatum = c(NA, 
    NA, NA), Nitzschia.longissima.min50 = c(NA_real_, NA_real_, 
    NA_real_), Nitzschia.longissima.mag50 = c(NA_real_, NA_real_, 
    NA_real_), Pseudo.nitzschia.min50 = c(NA_real_, NA_real_, 
    NA_real_), Pseudo.nitzschia.mag50 = c(NA_real_, NA_real_, 
    NA_real_), Licmophora = c(488250, NA, NA), Navicula = c(NA, 
    NA, NA), Skeletonema.costatum = c(270825, NA, 2797454.54545454 
    ), Guinardia = c(NA, 54950000, NA), Guinardia...20. = c(NA_real_, 
    NA_real_, NA_real_), Dactyliosolen = c(6264300, 22419600, 
    163184848.484849), Thalissiosia.constricta = c(NA, NA, NA 
    ), Hemiliaulus.haukii = c(NA, NA, NA), Rhizosolenia = c(NA, 
    NA, NA), Helicotheca = c(NA, NA, NA), Chaetoceros.lorenzianus = c(NA_real_, 
    NA_real_, NA_real_), Chaetoceros.affinis = c(NA_real_, NA_real_, 
    NA_real_), Chaetoceros..10 = c(NA_real_, NA_real_, NA_real_ 
    ), Chaetoceros..10.1 = c(219840, 210680, 2493555.55555556 
    ), Chaetoceros.decipiens = c(NA_real_, NA_real_, NA_real_ 
    ), Chaetoceros.Didymus = c(NA, NA, NA), Leptocylindrus = c(NA, 
    NA, 2685556.36363636), Asterionellopsis.glacialis = c(NA, 
    NA, NA), Ceratulina = c(NA, NA, NA), Corethron = c(NA, NA, 
    NA), Thalassiosira.nitzschioide = c(NA, NA, NA), Dictyocha = c(NA, 
    NA, NA), Cylindrotheca = c(NA, NA, NA), thalassiosira = c(NA, 
    NA, NA), bacteriastrum.hyalinum = c(NA, NA, NA), Eutripsiella = c(NA, 
    NA, NA), Cryptonomas = c(175840, NA, NA), Olisthodiscus = c(NA, 
    NA, NA), trasparente.quadrato = c(NA, NA, NA), flagellate.rotonde = c(NA, 
    NA, NA), pleurosigma = c(NA, NA, NA), amphidinium.carterae = c(NA_real_, 
    NA_real_, NA_real_), Actinoptychus.octonaria = c(NA, NA, 
    NA), pyramimonas = c(NA, NA, NA), acanthoica.aculata = c(NA, 
    NA, NA), Specie.fionda = c(NA, NA, NA), Asteroplans.Karianus = c(NA, 
    NA, NA), Chaetoceros.Lauderi = c(NA_real_, NA_real_, NA_real_ 
    ), Chaetoceros.curvisetus = c(NA_real_, NA_real_, NA_real_ 
    ), Eucampia.Zodiacus = c(NA, NA, NA), Eunotia.clevei = c(NA, 
    NA, NA), Diplopsalis = c(NA, NA, NA), ceratium = c(NA, NA, 
    NA), Raphidophyce = c(NA, NA, NA), Chaetoceros.atlanticus = c(NA, 
    NA, NA), Guinardia.delicatula = c(NA, NA, NA), Leptocylindrus.5 = c(NA_real_, 
    NA_real_, NA_real_)), .Names = c("CO2", "Meso", "Days", "Day", 
"Total.abundance.cell.l", "Tot.dinoflagellate.cell.l", "Tot.diatoms.cell.l", 
"Tot.other.cell.l", "Amphidinium", "Karenia.mikimotoi", "Heteocapsa", 
"Gymnodiales", "Peridinella", "Prorocentrum", "Gyrodinium", "Scripsiella", 
"Protoperidinium.bipes", "Protoperidinium", "Mesoporos.perforatus", 
"Ceratium.fusus", "Katodinium", "Gymnodinium", "Ceratium.lineatum", 
"Nitzschia.longissima.min50", "Nitzschia.longissima.mag50", "Pseudo.nitzschia.min50", 
"Pseudo.nitzschia.mag50", "Licmophora", "Navicula", "Skeletonema.costatum", 
"Guinardia", "Guinardia...20.", "Dactyliosolen", "Thalissiosia.constricta", 
"Hemiliaulus.haukii", "Rhizosolenia", "Helicotheca", "Chaetoceros.lorenzianus", 
"Chaetoceros.affinis", "Chaetoceros..10", "Chaetoceros..10.1", 
"Chaetoceros.decipiens", "Chaetoceros.Didymus", "Leptocylindrus", 
"Asterionellopsis.glacialis", "Ceratulina", "Corethron", "Thalassiosira.nitzschioide", 
"Dictyocha", "Cylindrotheca", "thalassiosira", "bacteriastrum.hyalinum", 
"Eutripsiella", "Cryptonomas", "Olisthodiscus", "trasparente.quadrato", 
"flagellate.rotonde", "pleurosigma", "amphidinium.carterae", 
"Actinoptychus.octonaria", "pyramimonas", "acanthoica.aculata", 
"Specie.fionda", "Asteroplans.Karianus", "Chaetoceros.Lauderi", 
"Chaetoceros.curvisetus", "Eucampia.Zodiacus", "Eunotia.clevei", 
"Diplopsalis", "ceratium", "Raphidophyce", "Chaetoceros.atlanticus", 
"Guinardia.delicatula", "Leptocylindrus.5"), row.names = c(1L, 
8L, 15L), class = "data.frame") 

什麼,我試圖做的是做應用功能,對數據幀的每一列計算最終logaritmo

f=function(x) { 
    MIN=apply(x,2,min,na.rm=T) 
    MAX=apply(x,2,max,na.rm=T) 
    MIN=as.numeric(MIN) 
    MAX=as.numeric(MAX) 
    logaritmo=log(MAX/MIN) 
    t2=which.max(x) 
    t1=which.min(x) 
    logaritmo/(t2-t1) 
} 

然後我想將這個函數應用到數據框的所有列,這樣我就得到每列最終結果logaritmo

我試着使用:

apply(fase1_M2,2,f) 

,但它不工作..

感謝您的幫助

+1

什麼是期望的輸出?你想讓函數f應用於整個數據框還是你想在'apply'調用中使用它? – thepule

+1

您使用'apply(fase1_M2,2,f)'在'f'中傳遞列。那麼在你的函數f中'apply(x,2,min,na.rm = T)'是什麼意思呢? – user2100721

+0

@thepule實際上,我認爲我可以更容易地編寫一個函數,每次一列,然後將這個函數應用於整個數據框。輸出應該是爲每列計算的數字數字「logaritmo」(一個'df'會超級好) – matteo

回答

1

如果我理解正確的話,這是你在找什麼(df是你的數據幀):

library(dplyr) 

lapply(df, function(x) { 
    if(class(x) == "numeric") log((max(x)/min(x))/(max(x) - min(x))) 
    else NA 
    } 
    ) %>% rbind() %>% data.frame() -> tt 

其中輸出tt是一個數據幀,其中包含最大/最小值的對數除以最大值和最小值之間的差值。對於非數字列或列包含不適用,它將返回不適用

+1

它的竅門!謝謝! – matteo