如何将每个系列变量应用于R中的循环计算

问题描述 投票:0回答:2

我有10个变量X1,X2,.. X10

> X1

[1] 11.388245  3.847984  3.271024  3.637894

> X2

[1]  3.603660  3.176091 20.868740  4.229564  3.150181  3.379059 11.379710  3.577636  5.094401

> X10

 [1] 11.613462  7.360181  3.210812  5.066974  5.391218  3.049254 10.639178  4.154140 

 [9]  3.502896  7.919751  3.416924  6.577095  5.047722  3.953996  3.153649  3.005215

ms<-list()

for (i in c(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10)){

  n<-length(i)

  m<-n/sum(log(i/3))

  ls<-c(ms,m)
}

上面的R代码不起作用。我想要的是使用包含从计算n/sum(log(i/3)算起的10个值的数字变量ms获得最终结果。

例如值之一:

> n<-length(X1)

> m<-n/sum(log(X1/3))
> 
> m
[1] 2.148009

在循环中应用X1,X2,.. X10后得到:

 Ms <-(m1 m2 m3 ...m10)
r
2个回答
0
投票
c函数将向量连接成1个长向量,例如c(1:3,5:7)将是1个包含6个元素的向量。

我认为您想要使用list而不是c,这将使向量保持为单个向量。

您的外观应该可以,例如:

ms<-list() for (i in list(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10)){ n<-length(i) m<-n/sum(log(i/3)) ms<-c(ms,m) }

注意最后一行的修复。

但是由于目标是使用结果创建一个新列表,因此使用lapply函数可能更简单:

ms <- lapply( list(X1,X2,X3,X4,X5,X6,X7,X8,X9,X10), function(x) length(x)/sum(log(x/3)) )


0
投票
这里是MWE
© www.soinside.com 2019 - 2024. All rights reserved.