【问题标题】:How to convert a character matrix to a numeric data.frame如何将字符矩阵转换为数字 data.frame
【发布时间】:2018-08-07 08:07:28
【问题描述】:

我有一个角色 matrix 和一个角色 data.table。当我合并它们时,会创建一个 data.frame,但 character 类都转换为我想避免的 factors。有办法避免吗?

df.new<-merge(matrix, df, by= col1)

我尝试事先将character matrix 转换为numeric,但后来我失去了matrix 的尺寸。

num.matrix<- sapply(matrix, as.numeric)

有没有一种巧妙的方法来处理这种情况?

【问题讨论】:

  • 您可以像这样将矩阵强制转换为数字:m &lt;- matrix(c("1", "a"), 2); mode(m) &lt;- "double"
  • m[] &lt;- as.numeric(m)

标签: r matrix


【解决方案1】:

您可以使用参数 stringsAsFactors = FALSE 将矩阵转换为 data.table。见下文:

library(data.table)
m <- matrix(letters[1:9], ncol = 3)
df <- data.table(V1 = letters[1:3], a = letters[4:6], b = letters[7:9])
foobar <- merge(as.data.table(m, stringsAsFactors = FALSE), df)
str(foobar)

输出:

Classes ‘data.table’ and 'data.frame':  3 obs. of  5 variables:
 $ V1: chr  "a" "b" "c"
 $ V2: chr  "d" "e" "f"
 $ V3: chr  "g" "h" "i"
 $ a : chr  "d" "e" "f"
 $ b : chr  "g" "h" "i"
 - attr(*, ".internal.selfref")=<externalptr> 
 - attr(*, "sorted")= chr "V1"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-14
    • 2019-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多