R 为什么x轴标签显示的是df[,1],而不是列名?
我正在尝试使用sapply获取数据帧的所有列的直方图。代码如下: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(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]
进行子集设置。明白了。谢谢大家!