R: преобразовать все строки фрейма данных в символьные векторы - PullRequest
0 голосов
/ 06 октября 2018

У меня есть матрица, возвращенная из функции combinations, что-то вроде:

combinations(3, 2, v=c("Yes", "No", "Maybe"))

, которая возвращает матрицу с 2 столбцами, содержащую комбинации 2 на 2 из 3 строк:

     [,1]    [,2] 
[1,] "Maybe" "No" 
[2,] "Maybe" "Yes"
[3,] "No"    "Yes"

Я хотел бы создать фрейм данных (или tibble), что-то вроде:

    values
[1] c("Maybe", "No")
[2] c("Maybe", "Yes")
[3] c("No", "Yes")

только с одним столбцом, содержащим вектор с исходными столбцами.Мне нужно это sapply функция для каждой строки.

Есть ли элегантное решение?(без цикла for, например)

1 Ответ

0 голосов
/ 06 октября 2018

Мы можем split по строке и преобразовать его в tibble с помощью list столбца 'values'

library(tidyverse)
library(gtools)
combinations(3, 2, v = c("Yes", "No", "Maybe")) %>% 
   split(seq_len(nrow(.))) %>%
   tibble(values = .)

Или другой вариант - создать строку с помощью unitэлементы каждого ряда

combinations(3, 2, v = c("Yes", "No", "Maybe")) %>% 
   as_tibble %>%
   unite(values, V1, V2, sep=", ")
...