【问题标题】:Matrix changing all values to character when taken randomly from a character vector矩阵从字符向量中随机获取时将所有值更改为字符
【发布时间】:2020-03-11 06:17:45
【问题描述】:

我正在尝试为我的数据生成工作生成一个矩阵。当前代码给出

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&lt;-c(1,2,3)它可以正常工作,因为所有值都是数字。

谁能帮我解决这个问题?我只需要第 2 列是字符而不影响其他列值

【问题讨论】:

  • 一个matrix 只能有一个类。您可以使用 dataframe /lists 来存储多个类的数据。
  • 如何创建数据框?你能帮忙写类似的代码吗?

标签: r vector character


【解决方案1】:

matrix 只能保存一类数据。我们可以使用data.frame来存储多个类的数据。我们也不需要for 循环。你可以试试:

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

【讨论】:

    猜你喜欢
    • 2011-02-18
    • 1970-01-01
    • 2021-11-28
    • 2020-09-08
    • 2014-01-14
    • 1970-01-01
    • 2023-03-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多