无法分配给不存在的列——使用 ARTool 包
Can't assign to columns that don't exist -- Using ARTool package
我正在使用 ARTool 包生成 post-hoc 测试,以查看因素组合之间的差异,但收到以下错误
Error: Can't assign to columns that don't exist.
x Column grade_levelbooks_quantile
doesn't exist.
Run rlang::last_error()
to see where the error occurred.
回溯后的注释如下:
rlang::last_error()
<error/vctrs_error_subscript_oob>
Can't assign to columns that don't exist.
x Column `grade_levelbooks_quantile` doesn't exist.
Backtrace:
1. emmeans::contrast(...)
4. ARTool::artlm.con(m.art, "grade_level:books_quantile")
5. ARTool:::artlm.con.internal(...)
6. ARTool:::generate.art.concatenated.df(m.f.parsed, df, f.parsed)
8. tibble:::`[[<-.tbl_df`(...)
9. tibble:::vectbl_as_new_col_index(j, x, value, j_arg, value_arg)
10. tibble:::vectbl_as_col_location(...)
13. vctrs::vec_as_location(j, n, names)
15. vctrs:::stop_subscript_oob(...)
16. vctrs:::stop_subscript(...)
Run `rlang::last_trace()` to see the full context.
我使用的数据的代码和描述(由于敏感性问题,我简化了数据):
library(ARTool)
m.art = art(percentile_rank ~ grade_level + books_quantile + grade_level*books_quantile,
data = read1)
art.con(m.art, "grade_level:books_quantile")
str(read1)
tibble [20,902 x 21] (S3: tbl_df/tbl/data.frame)
$ school_key : chr [1:20902] "309" "296" "198" "189" ...
$ school_year_key : chr [1:20902] "2019" "2019" "2019" "2019" ...
$ grade_level : Factor w/ 9 levels "K","1","2","3",..: 1 3 3 3 3 3 3 3 3 4 ...
$ percentile_rank : num [1:20902] 43 97 84 23 27 5 84 6 1 21 ...
$ discipline : chr [1:20902] "Reading" "Reading" "Reading" "Reading" ...
$ books_quantile : Factor w/ 3 levels "Q4","IQR","Q1": 2 2 2 3 3 2 2 2 2 3 ...
我不是很确定,但我敢打赌这就是您所需要的:
art.con(m.art, c("grade_level", "books_quantile"))
我认为这是 tibbles
的问题。
使用来自
的数据
data(goggles, package="WRS2")
那么这些都有效
m.art <- art(attractiveness ~ alcohol * gender, data = goggles)
art.con(m.art, "alcohol:gender")
art.con(m.art, ~alcohol*gender).
但是如果数据是 tibble
,像以前一样重新运行会出现类似的错误。
goggles <- tibble::as_tibble(goggles)
m.art <- art(attractiveness ~ alcohol * gender, data = goggles)
art.con(m.art, "alcohol:gender")
art.con(m.art, ~alcohol*gender)
所以解决方案是确保您的数据是 data.frame
。
我正在使用 ARTool 包生成 post-hoc 测试,以查看因素组合之间的差异,但收到以下错误
Error: Can't assign to columns that don't exist. x Column
grade_levelbooks_quantile
doesn't exist. Runrlang::last_error()
to see where the error occurred.
回溯后的注释如下:
rlang::last_error()
<error/vctrs_error_subscript_oob>
Can't assign to columns that don't exist.
x Column `grade_levelbooks_quantile` doesn't exist.
Backtrace:
1. emmeans::contrast(...)
4. ARTool::artlm.con(m.art, "grade_level:books_quantile")
5. ARTool:::artlm.con.internal(...)
6. ARTool:::generate.art.concatenated.df(m.f.parsed, df, f.parsed)
8. tibble:::`[[<-.tbl_df`(...)
9. tibble:::vectbl_as_new_col_index(j, x, value, j_arg, value_arg)
10. tibble:::vectbl_as_col_location(...)
13. vctrs::vec_as_location(j, n, names)
15. vctrs:::stop_subscript_oob(...)
16. vctrs:::stop_subscript(...)
Run `rlang::last_trace()` to see the full context.
我使用的数据的代码和描述(由于敏感性问题,我简化了数据):
library(ARTool)
m.art = art(percentile_rank ~ grade_level + books_quantile + grade_level*books_quantile,
data = read1)
art.con(m.art, "grade_level:books_quantile")
str(read1)
tibble [20,902 x 21] (S3: tbl_df/tbl/data.frame)
$ school_key : chr [1:20902] "309" "296" "198" "189" ...
$ school_year_key : chr [1:20902] "2019" "2019" "2019" "2019" ...
$ grade_level : Factor w/ 9 levels "K","1","2","3",..: 1 3 3 3 3 3 3 3 3 4 ...
$ percentile_rank : num [1:20902] 43 97 84 23 27 5 84 6 1 21 ...
$ discipline : chr [1:20902] "Reading" "Reading" "Reading" "Reading" ...
$ books_quantile : Factor w/ 3 levels "Q4","IQR","Q1": 2 2 2 3 3 2 2 2 2 3 ...
我不是很确定,但我敢打赌这就是您所需要的:
art.con(m.art, c("grade_level", "books_quantile"))
我认为这是 tibbles
的问题。
使用来自
data(goggles, package="WRS2")
那么这些都有效
m.art <- art(attractiveness ~ alcohol * gender, data = goggles)
art.con(m.art, "alcohol:gender")
art.con(m.art, ~alcohol*gender).
但是如果数据是 tibble
,像以前一样重新运行会出现类似的错误。
goggles <- tibble::as_tibble(goggles)
m.art <- art(attractiveness ~ alcohol * gender, data = goggles)
art.con(m.art, "alcohol:gender")
art.con(m.art, ~alcohol*gender)
所以解决方案是确保您的数据是 data.frame
。