【发布时间】:2016-07-27 14:43:03
【问题描述】:
这是我的数据框:
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)
但它不起作用..
感谢您的帮助
【问题讨论】:
-
期望的输出是什么?您希望函数
f应用于整个数据框还是在apply调用中使用它? -
您正在使用
apply(fase1_M2,2,f)传递f中的列。那么你的函数f里面的apply(x,2,min,na.rm=T)是什么意思呢? -
@thepule 实际上,我认为我可以更轻松地编写一个对每列一次工作一次的函数,然后将此函数应用于整个数据帧。输出应该是为每一列计算的数字
logaritmo(df会超级好) -
那么输出是每列最大值/最小值的对数?我没有得到你想在最后除以对数...
t1和t2应该代表什么? -
您的数据框中也有非数字列和很多 NA。你想怎么对付他们?