Me preguntaba si alguien podría ayudarme a usar un nombre de variable dentro de una función. He creado un gráfico de puntos que ordena variables y luego produce un mapa de bits, pero no puedo obtener R
para pasar el nombre de la variable al título plot
.Pasar el nombre de la variable al título de la función de trazado
Datos de ejemplo
id<-c(1,2,3)
blood<-c(1,2,10)
weight<-c(1,2,13)
mydata<-as.data.frame(cbind(id,blood,weight))
mydata$blood
#######SORTED DOT PLOT####
Dplotter<-function (id,x,Title=""){
if (is.null(Title)) {Title=""} else {Title=Title}
DIR<-paste("C:/temp/WholePlots/New/",Title,".bmp",sep="")
D<-as.data.frame(cbind(id,x))
x1<-as.data.frame(D[order(x),])
bmp(DIR)
dotchart(x1$x,labels=id,main=Title,pch=16)
dev.off()
}
###############
Dplotter(mydata$id,mydata$blood,"Blood")
Dplotter(mydata$id,mydata$weight,"Weight")
En la segunda línea de la función, me gustaría transmitir la nombre de la variable, algo así como
`if (is.null(Title)) {Title=varname(x)} else {Title=Title}`
modo que yo no' t tiene que poner "Sangre" en la función Título campo (por ejemplo, Dplotter (mydata $ id, mydata $ blood)
Básicamente, ¿cómo se pega uno en el nombre de la variable en una función? Es sería aún mejor si uno puede sacar el nombre del conjunto de datos del título (sin adjuntar el conjunto de datos, que me han dicho es mala práctica ), de modo que en lugar de obtener
mydata$blood
, acaba de obtener "sangre" En el título.No he podido encontrar una solución fácil para pegar un nombre de variable en una función. Como puede adivinar, al poner el nombre de la variable en una función
paste()
, se devuelven los valores de la variable (de modo que el título del diagrama se rellena con los valores en lugar del nombre de la variable).También me gustaría para automatizar la función aún más, de modo que pueda sólo hay que poner el conjunto de datos y el ID y, a continuación, tienen la función repite para cada variable en el conjunto de datos. Obviamente, esto requiere resolver primero la pregunta 1 de , de lo contrario, tanto el título como los nombres de archivo encontrarán problemas en .
Muchas gracias. Funciona realmente bien. ¿Alguien tiene alguna sugerencia sobre cómo hacer 2 (pregunta 2, ver arriba). Por ejemplo, hacer que foo plot se ejecute dentro de otra función "PlotALL", que pasa todas las variables de un conjunto de datos una por una para foo plot? Esto me permitiría escribir ## PlotAll (id, mydata) y obtener todos los gráficos impresos. Muchas gracias –