创建长度为10的列表:对于第一个组件列表[[1]],维度为1,第二个为1 * 2,第三个为3 * 3,第四个为4 * 4,依此类推。应从1:100随机选择值。
对于列表中的每个组件,请选择值> 50,当长度(值)> 1时写一个函数计算一个值= sd(值)/均值(值),否则返回0。
为每个组件循环,您将获得10个值,然后计算10个值的总和
这是我所做的,我不知道下一步该怎么做。
x1=runif(1,min = 1,max = 100)
x2=matrix(runif(2,min = 1,max = 100),1,2)
x3=matrix(runif(9,min = 1,max = 100),3,3)
x4=matrix(runif(16,min = 1,max = 100),4,4)
x5=matrix(runif(25,min = 1,max = 100),5,5)
x6=matrix(runif(36,min = 1,max = 100),6,6)
x7=matrix(runif(49,min = 1,max = 100),7,7)
x8=matrix(runif(64,min = 1,max = 100),8,8)
x9=matrix(runif(81,min = 1,max = 100),9,9)
x10=matrix(runif(100,min = 1,max = 100),10,10)
list=list(x1,x2,x3,x4,x5,x6,x7,x8,x9,x10)e
答案 0 :(得分:0)
这就是你想要的吗?
# filter values above 50
foo <- function(x) {
v <- x[x>50]
# if more than one, return sd/mean
if (length(v)>1)
sd(v)/mean(v)
# return 0 otherwise
else
0
}
# calculate the sum of foo applied to the 10 components of the list
sum(sapply(1:10, function(i) foo(matrix(runif(i^2, min=1, max=100), i))))
但如果foo
应用于整个矩阵(是这种情况吗?),那么你不需要矩阵步骤吗?
sum(sapply(1:10, function(i) foo(runif(i^2, min=1, max=100))))