在内部使用sapply

时间:2019-05-29 18:26:18

标签: r sapply

我需要在另一个sapply中执行sapply。

这是我的工作代码。

int currentDayOfWeekValue = Instant.now().atOffset(ZoneOffset.UTC).getDayOfWeek().getValue();

我想不做这个就构建10次数据框。

animal <- c("Dog", "Cat", "Bird", "Fish", "Monkey", "Lion", "Dolphin", "Panda")
a <- as.data.frame(sapply(1:7, function(y) rbinom(30, 1, sample(seq(.4, .9, by=.1), 1, prob = NULL))))
colnames(a) <- (animal)

我尝试了这个但没有成功

animal <- c("Dog", "Cat", "Bird", "Fish", "Monkey", "Lion", "Dolphin", "Panda")

a <- as.data.frame(sapply(1:7, function(y) rbinom(30, 1, sample(seq(.4, .9, by=.1), 1, prob = NULL))))
colnames(a) <- (animal)

b <- as.data.frame(sapply(1:7, function(y) rbinom(30, 1, sample(seq(.4, .9, by=.1), 1, prob = NULL))))
colnames(b) <- (animal)

...

j <- as.data.frame(sapply(1:7, function(y) rbinom(30, 1, sample(seq(.4, .9, by=.1), 1, prob = NULL))))
colnames(j) <- (animal)

谢谢

2 个答案:

答案 0 :(得分:0)

如果需要使用两个apply类型的函数来执行此操作,则可以执行以下操作:

此外,您在animal中有八只动物,并且只有7列。所以我缩短了animal

在外部循环上使用lapply总是会返回一个列表,根据我的理解,该列表比sapply更加整洁。

animal <- c("Dog", "Cat", "Bird", "Fish", "Monkey", "Lion", "Dolphin")

lapply(1:10, function(x){
  a <- as.data.frame(
    sapply(1:7, function(y) rbinom(30, 1, sample(seq(.4, .9, by=.1), 1, prob = NULL)))
  )
  names(a) <- (animal)
  a
})

答案 1 :(得分:0)

您正在使用sapply,因此不清楚您是否希望最终结果是矩阵还是列表。如果要使用矩阵作为输出,那么一种简单的方法是使用现有代码,但从扩展矢量开始(动物x复制)。

animal.reps = sapply(c("Dog", "Cat", "Bird", "Fish", "Monkey", "Lion", "Dolphin", "Panda"), paste, letters[1:10], sep = ".")
a = sapply(animal.reps, function(y) rbinom(30, 1, sample(seq(.4, .9, by=.1), 1, prob = NULL)) )

这给出了30x80的矩阵:

> dim(a)
[1] 30 80

> a[1:10, 1:10]
      Dog.a Dog.b Dog.c Dog.d Dog.e Dog.f Dog.g Dog.h Dog.i Dog.j
 [1,]     1     1     1     1     1     0     1     1     1     0
 [2,]     1     1     0     0     1     0     0     1     1     0
 [3,]     1     0     1     1     1     0     1     1     1     0
 [4,]     1     1     0     1     1     1     1     1     1     0
 [5,]     1     1     1     0     1     1     0     1     1     0
 [6,]     0     1     0     1     1     0     0     1     1     1
 [7,]     1     1     0     1     1     1     1     1     1     1
 [8,]     1     1     1     1     1     0     1     1     1     1
 [9,]     1     1     0     1     1     0     1     1     1     0
[10,]     0     1     1     1     1     1     1     1     1     1