library(RSA)

dat<- iris


lm(Petal.Length~Sepal.Length*Sepal.Width, data=dat)
RSA(Petal.Length~Sepal.Length*Sepal.Width, data=dat)

lm(Petal.Width~Sepal.Length*Sepal.Width, data=dat)
RSA(Petal.Width~Sepal.Length*Sepal.Width, data=dat)

我正在try 使用R中的RSA包进行响应面分析. 上面的命令运行良好.

然而,如果我稍微扭转一下,它永远不会起作用,尽管它是相同的命令.



for(i in 3:4){
  

  
  model1 <- lm(paste0(colnames(dat[i]),"~ Sepal.Length*Sepal.Width"), data=dat) # this works 
  model2 <- RSA(paste0(colnames(dat[i]),"~ Sepal.Length*Sepal.Width"), data=dat) # this doesnt
  
  
  out<-list(model1, model2)
  
  print(out)}

我不明白是因为

i=3
RSA(paste0(colnames(dat[i]),"~ Sepal.Length*Sepal.Width"), data=dat) 
 
RSA(Petal.Length~Sepal.Length*Sepal.Width, data=dat)

这两个命令在一个代码可以工作而其他代码不能工作时是等效的.

推荐答案

您需要将字符串显式转换为公式,例如:

f_str <- paste0(colnames(dat[i]),"~ Sepal.Length*Sepal.Width")
try(RSA(f_str, data=dat))
## Error in `[.data.frame`(data, , c(DV, IV1, IV2, control.variables)) : 
## undefined columns selected
RSA(formula(f_str), data=dat)  ## works

一个等同但略显简洁的版本:

RSA(reformulate("Sepal.Length*Sepal.Width", response = names(dat)[i]),
    data = dat)

R相关问答推荐

为什么stat_bin在R中的ggplot中显示错误的数字?

是否有R代码来判断一个组中的所有值是否与另一个组中的所有值相同?

在特定列上滞后n行,同时扩展框架的长度

对lme 4对象运行summary()时出错(diag中的错误(from,names = RST):对象unpackedMatrix_diag_get找不到)

在值和NA的行顺序中寻找中断模式

在连续尺度上转置标签[瀑布图,R]

如何根据嵌套元素的名称高效而优雅地确定它属于哪个列表?

线性模型斜率在减少原始数据时提供NA

如何基于两个条件从一列中提取行

安全地测试文件是否通过R打开

正在导出默认的RStudio主题,还是设置括号 colored颜色 ?

随机森林的带Shap值的蜂群图

我如何使用tidyselect来传递一个符号数组,比如Pivot_Long?

为什么在写入CSV文件时Purrr::Pwalk不起作用

错误包arrowR:READ_PARQUET/OPEN_DATASET&QOT;无法反序列化SARIFT:TProtocolException:超出大小限制&Quot;

构建一个6/49彩票模拟系统

如何使用包metaviz更改标签的小数位数?

分隔日期格式为2020年7月1日

如何创建一个由一个连续变量和一个因素变量组成的复杂方框图?

根据用户输入更改标记大小和 colored颜色 (R)