R 为第一个组件列表[[1]]创建长度为10:的列表
创建长度为10的列表:对于第一个组件列表[[1]],维度为1,第二个为1*2,第三个为3*3,第四个为4*4,依此类推。数值应从1:100中随机选择 对于列表中的每个组件,选择值>50,并编写一个函数,当长度(值)>1时,计算值=sd(值)/平均值(值),否则返回0 循环每个组件,您将得到10个值,然后计算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
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))))