R как связать символьный вектор с матричными числами - PullRequest
1 голос
/ 09 апреля 2020

У меня есть матрица 3 * 4 (называемая S1), скажем:

1 2 3 4
5 6 7 8
9 1 1 1

, и у меня есть вектор символов, называемый 'частота':

CX
XU
UK

Идея состоит в том, чтобы связать их, например,

CX 1 2 3 4
XU 5 6 7 8
UK 9 1 1 1

Я пытался использовать cbind как

result = cbind (частота, S1)

Но результат, который R производит

"CX" "1"  "2" "3" "4" 
"XU" "5"  "6" "7" "8"
"UK" "9"  "1" "1" "1" 

Есть идеи, как избавиться от скобок?

Ответы [ 3 ]

2 голосов
/ 09 апреля 2020

Генерация данных

frequency <- c("CU", "XU", "UK")
S1 <- matrix(c(1:8,9,1,1,1), nrow = 3, ncol = 4, byrow=TRUE)

Можно использовать это

cbind.data.frame(freq=frequency,s1=S1)

Выход

  freq s1.1 s1.2 s1.3 s1.4
1   CU    1    2    3    4
2   XU    5    6    7    8
3   UK    9    1    1    1
1 голос
/ 09 апреля 2020

Матрица принимает только один тип данных, в вашем случае преобразование цифры c в символ. Я рекомендую вам использовать структуру данных фрейма данных, индексирование аналогично матрице. Попробуйте:

result = cbind(frequency, as.dataframe(S1))
1 голос
/ 09 апреля 2020

S1 - матрица, и матрица может содержать данные только одного типа. Поскольку frequency является символьным вектором, он также приводит S1 значения к символу.

Повернуть S1 на фрейм данных

cbind(frequency, data.frame(S1))

ИЛИ

cbind.data.frame(frequency, S1)
...