0

我想要一个小函数显示给定数据集中每个数字变量的基本数据统计信息。到目前为止,我有以下内容:

AnalyzeNumericData <- function(x,GroupVar=NA) {

VarList <- names(x)  
NumVars <- length(VarList)  

for (i in (1:NumVars)) {
     if (is.numeric(x[,VarList[i]])) {
       par(mfrow=c(2,2))
         hist(x[,VarList[i]],main=paste("Histogram of ",VarList[i]),xlab=NA)
         boxplot(x[,VarList[i]],main=paste("Boxplot of ",VarList[i]))
      if (!is.na(GroupVar)) {
        boxplot(x[,VarList[i]]~x[,GroupVar],main=paste("Boxplot of ",VarList[i]," by ", GroupVar))
      }   
        # Add some text to bottom right
        # I've tried plot(1)
        # and then text(1,"MyText"), but this only alows me to put text on one place (in the middle of the plot)
    }
  }
}

AnalyzeNumericData(mtcars,"cyl")

该函数将为每个数值变量创建三个图表。我想在右下角区域添加一些文本而不是第四个图表。我知道 text(),但是我必须先创建类似空图表的东西才能使用它。

任何想法表示赞赏。

4

2 回答 2

1

您可以通过调用获得一个空的绘图区域plot(..., type="n")

plot(1:100, type="n", xaxt="n", yaxt="n", bty="n", xlab="", ylab="")
text(x=10, y=10, "foobar")

也许您想调整绘图的不同边距。因此,您也可以使用par(例如par("mar") <- c(0, 0, 0, 0),请参阅?par详细信息)。

于 2012-07-24T08:15:43.687 回答
1
AnalyzeNumericData <- function(x,GroupVar=NA) {
    VarList <- names(x)
    NumVars <- length(VarList)

    for (i in 1) {
        if (is.numeric(x[,VarList[i]])) {
            par(mfrow=c(2,2))
            hist(x[,VarList[i]],main=paste("Histogram of ",VarList[i]),xlab=NA)
            boxplot(x[,VarList[i]],main=paste("Boxplot of ",VarList[i]))
            if (!is.na(GroupVar)) {
                boxplot(x[,VarList[i]]~x[,GroupVar],main=paste("Boxplot of ",VarList[i]," by ", GroupVar))
            }
            plot(NA,NA,axes=F,xlim=c(0,10),ylim=c(0,10),xlab="",ylab="")
            text(5,5,labels="MyText")
        }
    }
}

AnalyzeNumericData(mtcars,"cyl")

您可以根据 和 更改和xy调整text(x,y,labels="MyText")文本的位置。xlimylim

于 2012-07-24T08:24:02.220 回答