Cbind / Rbind с условием Ifelse

Вот код, с которым я работаю:

x <- c("Yes","No","No","Yes","Maybe")
y <- t(1:10)
z <- t(11:20)

rbind.data.frame(ifelse(x == "Yes",y,z))

Это производит

    X1L X12L X13L X4L X15L
1   1   12   13   4   15

Желаемый результат:

x
1   Yes   1    2    3    4    5    6    7    8    9    10
2    No   11   12   13   14   15   16   17   18   19    20
3    No   11   12   13   14   15   16   17   18   19    20
4   Yes   1    2    3    4    5    6    7    8    9    10
5 Maybe   11   12   13   14   15   16   17   18   19    20

Я думал, что мог бы использовать оператор ifelse с функцией rbind.data.frame () или cbind.data.frame (). Так что еслиx == "Yes" тогда это будет объединено с вектором "у". Как показано в первом ряду желаемого выхода. Обратно еслиx!="Yes" тогда это будет объединено с вектором "z". Как бы я поступил так? Я также подумал, что может быть возможно индексирование с помощью функции which (), но я не мог придумать, как бы это использовать.

ОБНОВИТЬ ДРУГОЙ ВОПРОС

Вот код, с которым я работаю:

    a <- c(1,0,1,0,0,0,0)
    b <- 1:7 

    t(sapply(a, function(test) if(test==0) b else 0))

Which produces 

        [,1] [,2]      [,3] [,4]      [,5]      [,6]      [,7]     
    [1,] 0    Integer,7 0    Integer,7 Integer,7 Integer,7 Integer,7

Кто-нибудь из вас может это объяснить? Приведенный ниже код работает, но мне было интересно, почему функция sapply не работает. Также, как бы я сохранить матрицу, которая создается ниже?

`row.names<-`(t(t(rbind(b,0))[,(a!='1')+1L]),x) 

Ответ на мой самый последний вопрос

Для работы функции sapply необходимо, чтобы входные данные в операторе else были вектором, поэтому

        a <- c(1,0,1,0,0,0,0)
        b <- 1:7 
        c <- rep(0, times = length(a))
        t(sapply(a, function(test) if(test==0) b else c))

Теперь это дает правильный результат.

Ответы на вопрос(1)

Ваш ответ на вопрос