我需要在另一个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)
谢谢
答案 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