我有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)
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))
)