在数据框列上使用 poly
Use poly on dataframe column
我有一个像这样的数据框
wood <- read_csv("/Users/name/Desktop/AR/Exercise data-20201109/woodstrength.csv")
我select x 和 y
x <- wood %>% select(Conc)
y <- wood %>% select(Strength)
关系可以用 2 次多项式建模,所以我这样做了
m <- lm(y ~ poly(x, 2, raw = TRUE))
哪个returns
non-numerical argument for binary operator
但是 x 看起来像这样
> x
# A tibble: 19 x 1
Conc
<dbl>
1 1
2 1.5
3 2
4 3
5 4
6 4.5
7 5
8 5.5
9 6
10 6.5
11 7
12 8
13 9
14 10
15 11
16 12
17 13
18 14
19 15
我做错了什么?
所以显然选择 %>%
检索某种类型的子数据帧,poly()
无法处理。我用 x <- wood[['Conc']]
得到了 x,现在它不会抛出错误。非常感谢任何更详尽的解释。
如果您查看 poly
的帮助页面 (?poly) :
poly(x, ..., degree = 1, coefs = NULL, raw = FALSE, simple = FALSE)
[...]
x, newdata: a numeric vector at which to evaluate the polynomial. ‘x’
can also be a matrix. Missing values are not allowed in ‘x’.
您的数据集是 tibble,当您执行 select 时,它会将 object 保留为 tibble:
wood = tibble(`Conc` = rnorm(10),'Strength'=rnorm(10))
x <- wood %>% select(Conc)
class(x)
[1] "tbl_df" "tbl" "data.frame"
你得到那个错误是因为在函数下面,它应用了一些期望矩阵或向量的东西,但是看到了一个列表或 data.frame 或者在你的情况下是一个小标题,因此错误。您可以看到为什么调用该列有效:
class(wood[["Conc"]])
[1] "numeric"
要将其转换为数值或向量,您可以执行以下操作:
x <- wood %>% pull(Conc)
y <- wood %>% pull(Strength)
m <- lm(y ~ poly(x, 2, raw = TRUE))
或:
m <- lm(Strength ~ poly(Conc, 2, raw = TRUE),data=wood)
我有一个像这样的数据框
wood <- read_csv("/Users/name/Desktop/AR/Exercise data-20201109/woodstrength.csv")
我select x 和 y
x <- wood %>% select(Conc)
y <- wood %>% select(Strength)
关系可以用 2 次多项式建模,所以我这样做了
m <- lm(y ~ poly(x, 2, raw = TRUE))
哪个returns
non-numerical argument for binary operator
但是 x 看起来像这样
> x
# A tibble: 19 x 1
Conc
<dbl>
1 1
2 1.5
3 2
4 3
5 4
6 4.5
7 5
8 5.5
9 6
10 6.5
11 7
12 8
13 9
14 10
15 11
16 12
17 13
18 14
19 15
我做错了什么?
所以显然选择 %>%
检索某种类型的子数据帧,poly()
无法处理。我用 x <- wood[['Conc']]
得到了 x,现在它不会抛出错误。非常感谢任何更详尽的解释。
如果您查看 poly
的帮助页面 (?poly) :
poly(x, ..., degree = 1, coefs = NULL, raw = FALSE, simple = FALSE)
[...]
x, newdata: a numeric vector at which to evaluate the polynomial. ‘x’
can also be a matrix. Missing values are not allowed in ‘x’.
您的数据集是 tibble,当您执行 select 时,它会将 object 保留为 tibble:
wood = tibble(`Conc` = rnorm(10),'Strength'=rnorm(10))
x <- wood %>% select(Conc)
class(x)
[1] "tbl_df" "tbl" "data.frame"
你得到那个错误是因为在函数下面,它应用了一些期望矩阵或向量的东西,但是看到了一个列表或 data.frame 或者在你的情况下是一个小标题,因此错误。您可以看到为什么调用该列有效:
class(wood[["Conc"]])
[1] "numeric"
要将其转换为数值或向量,您可以执行以下操作:
x <- wood %>% pull(Conc)
y <- wood %>% pull(Strength)
m <- lm(y ~ poly(x, 2, raw = TRUE))
或:
m <- lm(Strength ~ poly(Conc, 2, raw = TRUE),data=wood)