这是我的数据框:
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)
但它不起作用..
感谢您的帮助
答案 0 :(得分: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
是一个数据框,其中包含max / min的对数除以max和min之间的差值。对于非数字列或包含 NA 的列,它将返回 NA 。