Матрица, изменяющая все значения на символы при случайном взятии из вектора символов - PullRequest
0 голосов
/ 11 марта 2020

Я пытаюсь сгенерировать матрицу для своей работы по генерации данных. Текущий код задается

nb<-sample(1:6,3,replace = T)
bt<-c("S","M","L")
df<-matrix(0,3,3)
for(i in 1:nrow(df)){
  df[i,1]<-nb[i]
  df[i,2]<-as.numeric(sample(bt,1,replace = T))
}

Но проблема в том, что он меняет все значения на символьные значения. Если я меняю bt<-c(1,2,3), он работает нормально, так как все значения являются цифрами c.

Кто-нибудь может мне помочь с этим? Мне просто нужно, чтобы столбец 2 был символом, не затрагивая другие значения столбца

1 Ответ

0 голосов
/ 11 марта 2020

matrix может содержать данные только одного класса. Мы можем использовать data.frame для хранения данных нескольких классов. Также нам не нужно for l oop здесь. Вы можете попробовать:

df <- as.data.frame(matrix(0,3,3))
df[[1]] <- nb
df[[2]] <- sample(bt, nrow(df), replace = TRUE)

df
#  V1 V2 V3
#1  1  M  0
#2  5  M  0
#3  6  S  0

str(df)
#'data.frame':  3 obs. of  3 variables:
#$ V1: int  1 5 6
#$ V2: chr  "M" "M" "S"
#$ V3: num  0 0 0
...