【问题标题】:Simple way of converting list from character to numeric in R?在R中将列表从字符转换为数字的简单方法?
【发布时间】:2017-07-05 07:34:30
【问题描述】:

我已经研究了有关此问题的其他线程,但找不到简单的解决方案。我已经从 Excel 表格中导入数据,并将它们加入到通常如下所示的列表中:

> Hemo
[[1]]
V1 V2 V3 V4  V5  V6  V7
1 0d 3d 6d 9d 12d 15d 18d
2 10 40 20 60  50  30  40
3 20 30 30 30  30  30  30
4 20 20 30 20  40  20  50

[[2]]
V1 V2 V3 V4  V5  V6  V7
1 0d 3d 6d 9d 12d 15d 18d
2  0 10 10  0   0   0   0
3  0 10 20 20  20   0   0
4  0  0 10 20  20   0   0

但是我希望它们看起来像这样(这是一个数组):

, , 1

0d 3d 6d 9d 12d 15d 18d
V2 10 40 20 60  50  30  40
V3 20 30 30 30  30  30  30
V4 20 20 30 20  40  20  50

, , 2

0d 3d 6d 9d 12d 15d 18d
V2  0 10 10  0   0   0   0
V3  0 10 20 20  20   0   0
V4  0  0 10 20  20   0   0

在第一种情况下,所有元素都是字符,我无法将它们强制转换为数字。最终,我想将第一个列表转换为第二个数组,其中第一个导入的行作为列名。必须有一些包可以做到这一点?请让我们找到一个简单的解决方法,因为我是新手。谢谢

【问题讨论】:

  • 你使用lapply函数了吗???lapply(Hemo, as.numeric)
  • 解决起来并不难,但最好从一开始就以正确的格式导入。你是怎么看excel表格的?可能有一个 hear 或 colnames 参数可以设置为 TRUE,然后数据可能会被自动识别为数字,您不需要这样做
  • 它会更像lapply(Hemo,function(m){names(m)<- m[1,];m <- as.numeric(m[2:nrow(m),])})
  • 是的,我正在重新导入所有文件,然后指定标题。我仍然认为转换应该更容易,但是对象中的因素解释存在一些问题,现在我已经超出了。
  • BTW @R.B as.numeric() 返回一些其他数字,这些数字是一些属性,我尝试了很多不同的方法。

标签: arrays r dataframe


【解决方案1】:

看起来好像您从 excel 导入了数据,但列名被解释为数据。您没有指定用于执行导入的函数,但是对于大多数函数,您可以指定第一行数据是列名。

library(readxl)
data <- read_excel(filename, col_names = TRUE)

当您正确导入数据时,它不会混淆实际数据,并且应该自动将其读取为数字。这样您就不必自己转换了。

【讨论】:

    猜你喜欢
    • 2016-03-05
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 2010-12-21
    • 2012-09-16
    • 2013-09-16
    • 2013-08-18
    • 2014-03-05
    相关资源
    最近更新 更多