Хобрук: Ваш путь к мастерству в программировании

Альтернативные элементы вектора с несколькими NA

У меня есть вектор символов в R, и я хочу создать новый вектор с несколькими NA между элементами вектора символов. Чтобы упростить, вектор символов:

cv <- c( "A", "B", "C" )

Допустим, нам просто нужно 3 NA (на самом деле нужно гораздо больше). Желаемый выходной вектор будет:

"A", NA, NA, NA, "B", NA, NA, NA, "C", NA, NA, NA

Я предполагаю, что об этом уже спрашивали, но это очень сложно найти. Я пробовал различные перестановки и комбинации rep и rbind без успеха. Быть нежным; мой первый вопрос :-)

15.12.2019

Ответы:


1

Используйте sapply для объединения c(NA, NA, NA) с каждым элементом cv, чтобы для каждого элемента cv мы получили 4-вектор. sapply упорядочит их в матрицу 4 x n (где n — длина cv), а c слева разложит эту матрицу на вектор.

c(sapply(cv, c, rep(NA, 3)))
##  [1] "A" NA  NA  NA  "B" NA  NA  NA  "C" NA  NA  NA 
15.12.2019
  • Спасибо. Я никогда не понимал эти функции применения, но я думаю, мне нужно больше работать над этим. Я выбираю это как ответ, потому что он кажется (мне) немного более простым, чем другой. 15.12.2019

  • 2

    Мы могли бы создать вектор с элементами NA и заменить элементы cv на основе позиции, сгенерированной seq.

    n <- 3
    vec <- rep(NA, (n + 1) * length(cv))
    vec[seq(1, length(vec), n + 1)] <- cv
    vec
    #[1] "A" NA  NA  NA  "B" NA  NA  NA  "C" NA  NA  NA 
    
    16.12.2019

    3

    Вы можете попробовать сыграть с matrix() и as.vector()

    v <- as.vector(rbind(cv,matrix(nrow = 3,ncol = length(cv))))
    

    такой, что

    > v
     [1] "A" NA  NA  NA  "B" NA  NA  NA  "C" NA  NA 
    [12] NA 
    
    15.12.2019
    Новые материалы

    Создание кнопочного меню с использованием HTML, CSS и JavaScript
    Вы будете создавать кнопочное меню, которое имеет состояние наведения, а также позволяет вам выбирать кнопку при нажатии на нее. Финальный проект можно увидеть в этом Codepen . Шаг 1..

    Внедрите OAuth в свои веб-приложения для повышения безопасности
    OAuth — это широко распространенный стандарт авторизации, который позволяет приложениям получать доступ к ресурсам от имени пользователя, не раскрывая его пароль. Это позволяет пользователям..

    Классы в JavaScript
    class является образцом java Script Object. Конструкция «class» позволяет определять классы на основе прототипов с чистым, красивым синтаксисом. // define class Human class Human {..

    Как свинг-трейдеры могут использовать ИИ для больших выигрышей
    По мере того как все больше и больше профессиональных трейдеров и активных розничных трейдеров узнают о возможностях, которые предоставляет искусственный интеллект и машинное обучение для улучшения..

    Как построить любой стол
    Я разработчик программного обеспечения. Я люблю делать вещи и всегда любил. Для меня программирование всегда было способом создавать вещи, используя только компьютер и мое воображение...

    Обзор: Машинное обучение: классификация
    Только что закончил третий курс курса 4 часть специализации по машинному обучению . Как и второй курс, он был посвящен низкоуровневой работе алгоритмов машинного обучения. Что касается..

    Разработка расширений Qlik Sense с qExt
    Использование современных инструментов веб-разработки для разработки крутых расширений Вы когда-нибудь хотели кнопку для установки переменной в приложении Qlik Sense? Когда-нибудь просили..