首页 > 解决方案 > 将 R 中的 data.frame 列表转换为双精度列表

问题描述

我在 R 中有一个如下所示的列表(dput):

在此处输入图像描述

list(AAA = structure(list(Point = " -11.742 , -1.552 , 1.307 , 27.407 , 47.635 , 40.457 , 40.457 , 44.573 , 24.345 , -7.879 , -19.874 , -23.991 "), row.names = "AAA", class = "data.frame"), 
    BBB = structure(list(Point = " -11.742 , -1.552 , 1.307 , 27.407 , 35.801 , 28.622 , 4.954 , -2.764 , -11.158 , -19.713 , -23.946 , -16.228 , -0.704 , 2.826 , 7.059 "), row.names = "BBB", class = "data.frame"), 
    CCC = structure(list(Point = " -11.742 , -1.552 , 1.307 , 27.407 , 35.801 , 28.622 , 4.954 , -2.764 , -11.158 , -19.713 , -23.946 , -16.228 , -0.704 , -7.437 , -3.204 , -23.729 , -32.812 , -26.078 , -10.252 , -11.421 , -2.338 "), row.names = "CCC", class = "data.frame"), 
    DDD = structure(list(Point = " -11.742 , -1.552 , 1.307 , 27.407 , 35.801 , 28.622 , 4.954 , -2.764 , -11.158 , -19.713 , -23.946 , -16.228 , -0.704 , 2.826 , 7.059 "), row.names = "DDD", class = "data.frame"))

我需要它看起来像这样(dput):

在此处输入图像描述

list(AAA = c(-11.742, -1.552, 1.307, 27.407, 47.635, 40.457, 
40.457, 44.573, 24.345, -7.879, -19.874, 23.991), BBB = c(-11.742, 
-1.551, 1.308, 27.407, 35.801, 28.623, 4.954, -2.764, -11.158, 
-19.713, -23.946, -16.228, -0.704, 2.826, 7.059), CCC = c(-11.742, 
-1.551, 1.308, 27.407, 35.801, 28.623, 4.954, -2.764, -11.158, 
-19.713, -23.946, -16.228, -0.704, -7.437, -3.204, -23.729, -32.812, 
-26.078, -10.252, -11.421, -2.338), D = c(-11.742, -1.551, 1.308, 
27.407, 35.801, 28.623, 4.954, -2.764, -11.158, -19.713, -23.946, 
-16.228, -0.704, 2.826, 7.059))

我已经尝试使用 as.double 来更改列的数据类型,但我还没有找到正确的代码来完成这项工作。我怎样才能转换这个?

标签: rlistdataframe

解决方案


对于列表中的每个元素,用逗号分割字符串,删除空格并将数据转换为数字。

list_data <- lapply(list_data, function(x) 
                    as.numeric(trimws(strsplit(x$Point, ',\\s*')[[1]])))
list_data

在此处输入图像描述


推荐阅读