Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:循环过滤_R_Loops_Filter_Character - Fatal编程技术网

R:循环过滤

R:循环过滤,r,loops,filter,character,R,Loops,Filter,Character,我将通过循环在不同的数据集上执行lm(),循环应该首先使用filter()生成数据集,然后对过滤后的数据集执行lm(),并保存结果。 然而,我总是犯这个错误,我不知道我做错了什么 “使用行子集更新全局环境中的原始对象时,中的错误对比将为后续迭代抛出错误,因为=为'var2'和'var3'返回0行(当数据集在'variable_name'中只有'var1'值时)。相反,创建一个临时对象。”(也可以删除)在循环中 for (b in a){ tmp <- subset(dataset, v

我将通过循环在不同的数据集上执行lm(),循环应该首先使用filter()生成数据集,然后对过滤后的数据集执行lm(),并保存结果。 然而,我总是犯这个错误,我不知道我做错了什么


“使用行子集更新全局环境中的原始对象时,
中的错误对比将为后续迭代抛出错误,因为
=
为'var2'和'var3'返回0行(当
数据集
在'variable_name'中只有'var1'值时)。相反,创建一个临时对象。”(也可以删除)在循环中

for (b in a){
  tmp <- subset(dataset, variable_name == b)
   model <- lm(y ~ x1 + x2, data = tmp)
   assign(paste(b, "lm", sep='_'), model)
   rm(tmp)
 }
或者如果我们更喜欢使用“a”向量(假设“variable_name”中有更多的
唯一的
值,并且只需要基于“a”向量的模型)


model\l您在每次迭代中更新全局环境中的
dataset
,当您进入下一次迭代而不是创建临时数据集时,该数据集将失败(在第一次迭代后,数据集只有变量名称值为“var1”的行)。例如
tmp%过滤器(变量名称==b)
并在
lm
中使用它,啊,好的,我明白我现在做错了什么!非常感谢!!
dataset <- dataset%>%filter(variable_name == **paste0("'",b,"'")**)
for (b in a){
  tmp <- subset(dataset, variable_name == b)
   model <- lm(y ~ x1 + x2, data = tmp)
   assign(paste(b, "lm", sep='_'), model)
   rm(tmp)
 }
model_lst <- lapply(split(dataset, dataset$variable_name), function(tmp)
          lm(y ~ x1 + x2, data = tmp))
model_lst <- lapply(a, function(b) {
            lm(y ~ x1 + x2, data = subset(dataset, variable_name == b)
  })