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

时间:2016-04-01 15:53:18

标签: 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,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

1 个答案:

答案 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))))