【发布时间】:2018-05-16 20:53:38
【问题描述】:
我对以下为什么不起作用感到困惑。我正在尝试将数据框/tibble 的名称用作多模型数据框中的列,但不断遇到以下错误。这是一个例子:
library(tidyverse)
library(rlang)
set.seed(666)
df1 <- tibble(
x = 1:10 + rnorm(10),
y = seq(20, 38, by=2) + rnorm(10),
z = 2*x + 3*y
)
df2 <- tibble(
x = 1:10 + rnorm(10),
y = seq(20, 38, by=2) + rnorm(10),
z = 4*x + 5*y
)
results <- tibble(dataset = c('df1','df2'))
请注意以下所有操作:
lm(z ~ x + y, data=df1)
lm(z ~ x + y, data=df2)
lm(z ~ x + y, data=eval(sym('df1')))
但是当我尝试以下操作时:
results <- results %>% mutate(model = lm(z ~ x + y, data = eval(sym(dataset))))
我得到了错误
Error in mutate_impl(.data, dots) :
Evaluation error: Only strings can be converted to symbols.
有人能弄清楚如何使这项工作发挥作用吗?
【问题讨论】:
-
这类事情的首选方法是将
df1和df2放在一个数据框中,用一列划分两组,然后明确地逐组拟合模型。 -
是的,我知道这种方法,但实际上数据框非常大,因此将它们作为单个数据框或作为列表列中的数据框条目进行操作很不方便。跨度>
标签: r purrr tibble rlang tidyeval