2020-08-11R语言中dataframe与list的转换方法

Python033

2020-08-11R语言中dataframe与list的转换方法,第1张

内容概览

1、dataframe转换为list

-- 1.1. 每一列作为list的一个元素

-- 1.2. 每一行作为list的一个元素

-- 1.3. 对行进行分组,每一组作为list的一个元素

2、对list进行转置

3、list转换为dataframe

-- 3.1 list的每个元素作为一列

-- 3.2 list的每个元素作为一行

1.2 每一行作为list的一个元素

1.3 对行进行分组,每一组作为list的一个元素

2、对list进行转置

3、list转化为dataframe

3.1 list的每个元素作为一列

3.2 list的每个元素作为一行

需要先转换为矩阵,再转换为数据框。

参考: wonphen

列表是R语言中的对象,它包含不同类型的元素,比如 - 数字,字符串,向量和另一个列表等。一个列表还可以包含一个矩阵或一个函数作为它的元素。使用list()函数创建列表。

列表元素可以给定它们的名字并且可以使用这些名称来访问。

列表的元素可以通过在列表中的元素的索引来访问。如遇命名列表也可以使用名称来访问。

继续使用在上面例子的列表

我们可以添加,删除和更新列表中的元素,如下图所示。我们可以增加或删除而且只能添加到列表的末尾的元素。但是可以更新任何元素。

可以把所有的列表传到一个 list()函数合并多个列表成一个列表。

列表可以被转换为一个向量,以便能用于进一步操纵向量的元素。所有关于向量的算术运算可以在列表被转换为矢量之后被应用。要做到这一点转换,使用unlist() 函数。它以列表作为输入,并产生一个向量。

简单的做法

vec <- as.vector(unlist(mylist))

但这代码有个问题 如果list 内包含 NULL 或者character(0) 这种0长元素,生成的vec 会短于mylist,导致对应相错位。这在处理数据框时并不合适。典型的情况出现在正则表达式提取文本。有些行并没有匹配,导致charater(0) 的出现。但生成的vec 又不允许错位。

要保留对应位置需要用循环

res <- character()

count=0

for(i in mylist){count=count+1

    if(length(i)==0){

        res[count]=NA

        }else{

        res[count]=i

        }

}