Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/64.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/5/fortran/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 列表元素上的lm_R_List_Lm - Fatal编程技术网

R 列表元素上的lm

R 列表元素上的lm,r,list,lm,R,List,Lm,假设我有一个包含三个数据帧的列表 set.seed(55) df1 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6)) df2 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6)) df3 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6)) l <- list(df1, df2, df3) 我想要一个每个元素的列表,a和c的lm。

假设我有一个包含三个数据帧的列表

set.seed(55)
df1 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6))
df2 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6))
df3 <- data.frame(a=rnorm(6), b=rnorm(6), c=rnorm(6))
l <- list(df1, df2, df3)

我想要一个每个元素的列表,a和c的lm。任何帮助都将不胜感激。多谢各位

您可以用一个简单的
lappy
来实现这一点,如下所示:

lapply(l, lm, formula = a ~ c)

您可以通过一个简单的
lappy
来实现这一点,如下所示:

lapply(l, lm, formula = a ~ c)

如果您想保持您建议的格式(for循环),您需要在for循环语句中使用类似
1:length(l)
的内容

同样,如果你一直给x赋值,你会一直覆盖它。在下面的内容中,我将线性模型指定给字母表的第24、25和26个字母,因此有一个称为x、y和z的lm。其他建议的解决方案要干净得多

for(i in 1:length(l)) {
 assign(letters[24:26][i], (lm(l[[i]]$a~l[[i]]$c)))
}

如果您想保持您建议的格式(for循环),您需要在for循环语句中使用类似
1:length(l)
的内容

同样,如果你一直给x赋值,你会一直覆盖它。在下面的内容中,我将线性模型指定给字母表的第24、25和26个字母,因此有一个称为x、y和z的lm。其他建议的解决方案要干净得多

for(i in 1:length(l)) {
 assign(letters[24:26][i], (lm(l[[i]]$a~l[[i]]$c)))
}

接受的答案是首选的,但对于来自for-loop心态的人来说,告诉他们
lappy
解决方案(至少是将结果分配给“x”的解决方案)等同于以下内容可能是有用的:

x<-list();
for(i in seq_along(l) ) {
      x[[i]] <- lm(a~c, data=l[[i]])
    }

x接受的答案是首选答案,但对于那些来自for循环思维的人来说,告诉他们
lappy
解决方案(至少是将结果分配给“x”的解决方案)与此等效可能是有用的:

x<-list();
for(i in seq_along(l) ) {
      x[[i]] <- lm(a~c, data=l[[i]])
    }

x此操作失败的原因是,当您第一次为(i in l){…}执行此操作时,我将是l的第一个元素。它不会是数字1,而是字面上的l[[1]]。所以你的代码归结为
x,失败的原因是当你第一次通过循环时,我将是l的第一个元素。它不会是数字1,而是字面上的l[[1]]。因此,您的代码归结为
x,非常简单和干净。谢谢!!如此简单和干净。谢谢!!