R 为什么x轴标签显示的是df[,1],而不是列名?

R 为什么x轴标签显示的是df[,1],而不是列名?,r,ggplot2,sapply,R,Ggplot2,Sapply,我正在尝试使用sapply获取数据帧的所有列的直方图。代码如下: sapply(isNumVal, plotHist) plotHist <- function(df){ df <- tbl_df(df) print( ggplot(df, aes(x = df[1])) + geom_histogram() ) } sapply(isNumVal,plotH

我正在尝试使用sapply获取数据帧的所有列的直方图。代码如下:

sapply(isNumVal, plotHist)

plotHist <- function(df){
          df <- tbl_df(df)

            print(
              ggplot(df, aes(x = df[1])) + geom_histogram() 
            )

          }
sapply(isNumVal,plotHist)

plotHist还有很多其他方法,这里有一种。尝试将dataframe和列名传递给函数,并使用
aes\u string

plotHist <- function(myDf, myCol){
  ggplot(myDf, aes_string(x = myCol)) + geom_histogram()
}

lapply(colnames(isNumVal), function(i) plotHist(isNumVal, i))

plotHist高用户。它不起作用。ggplot正在用代码替换所有绘图中的“df[,1]而不是“value”。因为
df[1]
是您分配给x的内容,而不是列的名称。此外,使用
aes
中的数据框名称通常会导致错误和范围问题。您可以使用tidyeval方法,或者还有其他SO问题,这些问题将有助于以编程方式创建GGPLOTS Add
+的可能副本xlab(实验室名称)
geom\u直方图()后调用,如中所示。另请参见示例以正确编写
(aes())
正如@Camille Thank you zx所指出的函数。它是有效的。你能给我指一些阅读资料来理解我的原始代码为什么不起作用吗。@RaviShankarHela对不起,我不明白你的问题。下面的代码有什么问题:sapply(isNumVal,plotHist)plotHist@RaviShankarHela正如其他人在评论中解释的那样,在子集设置时,您将丢失数据帧的名称。在
function(df)
中,
df
是一个未命名的向量,您正在转换为数据帧,您再次使用
df[1]
进行子集设置。明白了。谢谢大家!