【问题标题】:changing data frame from character to numeric将数据框从字符更改为数字
【发布时间】:2019-04-05 07:21:14
【问题描述】:

我有一个包含名称列和行的大型数据框。由于某种原因,当我使用下面的 sapply 函数检查时,数据框中的数字被列为字符。我试图更改为如下数字,但它更改了数据框 - 从行中删除名称并且不再是数据框。我无法将要手动更改的列列为 >100 列,将整体基因 ID 名称列为列名称,将 DE1 等列为行名称。数据框是样本。 数据示例如下所示:

     EN00000345    EN00000456    EN00000067
DE1   1.47           7.2          -1.23
DR16  3.4            6.5           0.2
C20   2.7            8.7           7.8 
DR12  4.5            3.2           12.1 
`````````
sapply(samples, mode)

fwrite(samples, "some.name.temp")
  samples<- fread("some.name.temp", colClasses = "numeric")


also tried

samples <- lapply(samples, function(x) as.numeric(as.character(x)))

返回数据不再是数据框,看起来像:

    EN00000345    EN00000456    EN00000067
1     1.47           7.2          -1.23
2     3.4            6.5          0.2
3     2.7            8.7          7.8

【问题讨论】:

  • 试试samples[] &lt;- lapply(samples, function(x) as.numeric(as.character(x)))
  • 如果你有list输出到samples,它应该是一个list的向量,但在输出中显示它不是这样的。你能检查一下原始数据集的str
  • 原始数据集的结构是字符,您建议我尝试并输出的代码会删除行名。不过谢谢你
  • 如果它是 data.frame,它应该可以工作。那么可能不是data.frame
  • 好的,我会仔细检查。谢谢你

标签: r


【解决方案1】:

您可以尝试使用此代码(df=您的数据框的名称):

for(j in 1:ncol(df)){
  df[,j]=as.numeric(df[,j])
}

【讨论】:

  • 非常感谢!这行得通,我已经为此苦苦挣扎了两天多……谢谢!周末愉快
猜你喜欢
  • 2022-01-15
  • 2021-12-28
  • 2020-05-18
  • 1970-01-01
  • 2021-11-02
  • 2023-01-09
  • 2018-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多