R 中用于绘图目的的错误子集数据框
error subsetting data frame for plot purposes in R
我有一个无法重现的数据框,其中 [col1,col2,...] 列是数值。
当我尝试绘制其中一列时:
hist(df[,"col1"])
我收到以下错误:
Error in hist.default(df[, var]) : 'x' must be numeric*
但是我可以像这样子集数据框时绘制它:
hist(df$col1]
绘制箱线图时不会发生这种情况
很可能你的 df
不是数据框而是一个 tibble。
当您使用 one-colum 对数据帧进行子集化时,您会得到一个向量。
mtcars[, 'mpg']
[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4
[17] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
这适用于 hist
:
hist(mtcars[,"mpg"])
这和做
一样
hist(mtcars$mpg)
但是,如果你有一个 tibble,将 tibble 子集 one-column returns 一个 tibble 返回。
df <- tibble::tibble(mtcars)
df[,"mpg"]
# A tibble: 32 x 1
# mpg
# <dbl>
# 1 21
# 2 21
# 3 22.8
# 4 21.4
# 5 18.7
# 6 18.1
# 7 14.3
# 8 24.4
# 9 22.8
#10 19.2
# … with 22 more rows
所以你得到错误:
hist(df[,"mpg"])
Error in hist.default(df[, "mpg"]) : 'x' must be numeric
在这种情况下,您应该使用 [[
来获取矢量/
hist(df[["mpg"]])
如果是tibble
,我们也可以用$
hist(df$mpg)
我有一个无法重现的数据框,其中 [col1,col2,...] 列是数值。 当我尝试绘制其中一列时:
hist(df[,"col1"])
我收到以下错误:
Error in hist.default(df[, var]) : 'x' must be numeric*
但是我可以像这样子集数据框时绘制它:
hist(df$col1]
绘制箱线图时不会发生这种情况
很可能你的 df
不是数据框而是一个 tibble。
当您使用 one-colum 对数据帧进行子集化时,您会得到一个向量。
mtcars[, 'mpg']
[1] 21.0 21.0 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 17.8 16.4 17.3 15.2 10.4 10.4
[17] 14.7 32.4 30.4 33.9 21.5 15.5 15.2 13.3 19.2 27.3 26.0 30.4 15.8 19.7 15.0 21.4
这适用于 hist
:
hist(mtcars[,"mpg"])
这和做
一样hist(mtcars$mpg)
但是,如果你有一个 tibble,将 tibble 子集 one-column returns 一个 tibble 返回。
df <- tibble::tibble(mtcars)
df[,"mpg"]
# A tibble: 32 x 1
# mpg
# <dbl>
# 1 21
# 2 21
# 3 22.8
# 4 21.4
# 5 18.7
# 6 18.1
# 7 14.3
# 8 24.4
# 9 22.8
#10 19.2
# … with 22 more rows
所以你得到错误:
hist(df[,"mpg"])
Error in hist.default(df[, "mpg"]) : 'x' must be numeric
在这种情况下,您应该使用 [[
来获取矢量/
hist(df[["mpg"]])
如果是tibble
,我们也可以用$
hist(df$mpg)