R 为第一个组件列表[[1]]创建长度为10:的列表

R 为第一个组件列表[[1]]创建长度为10:的列表,r,R,创建长度为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

创建长度为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
这是你想要的吗

# 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
函数已经有了相当多的注释,如果您有问题,请告诉我
sapply
将对从
runif
采样并作为矩阵排列(或不排列)的数字应用
foo
。例如,在第四步,
i=4
,我们对16个数字进行采样,并将它们排列在一个4x4矩阵中,在该矩阵上应用
foo
sum(sapply(1:10, function(i) foo(runif(i^2, min=1, max=100))))