L'azienda per cui lavoro ha sempre un'analisi ELISA (il test del sistema immunitario), quindi sto programmando una funzione che accetta una versione in formato csv della lettura della macchina per le densità ottiche e gestisce una regressione statistica chiamata analisi 4PL. È essenzialmente una funzione 4pl for dummies che fa uso del pacchetto drc. Ho scritto la maggior parte del codice, ma ora sto provando a inserirlo effettivamente in un formato di funzione (funziona benissimo al di fuori della struttura delle funzioni).Funzione utente, oggetto formals definito ma non trovato dal codice
Ecco il mio problema. Sto definendo la formali() della mia funzione in questo modo:
elisa<-function(file="data.csv",wd="~/Desktop",standards=c(1,2),orient=horizontal,
limit=TRUE,graph.4pl=FALSE,Conc.graph=FALSE){ body of function}
Non è particolarmente importante quello che gli altri formali sono in questo momento, ma io sono in esecuzione in due problemi. Ecco il codice per la prima parte del blocco.
rm(list=ls())
setwd(wd)
library(drc);library(reshape2);library(ggplot2)
data<-read.csv(file,head=TRUE, colClasses=c("character"))
Se la comunità nella sua saggezza pensa ho bisogno di includere più, io voglio, ma cerchiamo di lasciarlo lì per ora.
Il problema:
elisa("Mock data.csv")
Error in setwd(wd[1]) : object 'wd' not found
Questo errore si presenta. Come si può vedere, però, WD è definito
formals(elisa)
$file
[1] "data.csv"
$wd
[1] "~/Desktop"
$standards
c(1, 2)
$orient
horizontal
$limit
[1] TRUE
$graph.4pl
[1] FALSE
$Conc.graph
[1] FALSE
Inoltre, se predefinire wd come "~/Desktop"
nel contesto globale, l'errore per WD va via, ma ottengo questo
wd<-"~/Desktop"
elisa("Mock data.csv")
Error in read.table(file = file, header = header, sep = sep, quote = quote, :
'file' must be a character string or connection
O io sono completamente a mio agio su come sto definendo le mie formali, o mi sto imbattendo in argomenti di passaggio molto dispari. Qualche idea?
Perché non includere il percorso nell'argomento 'file'? Inoltre, dubito che sia un problema che stai vedendo, ma 'horizontal' deve essere una stringa di caratteri? –
Hai ragione. Una volta risolto il problema principale, il successivo errore identificato è stato considerato orizzontale come oggetto anziché come stringa :) – Eich