将数据帧的每一行转换为R中的新列表

时间:2019-04-24 18:53:29

标签: r list dataframe

我下面有示例input数据-

> df <- data.frame(a=c(1,2,9),b=c(3,4,5),c=c(2,6,7))
> df
  a b c
1 1 3 2
2 2 4 6
3 9 5 7

我正在尝试将rach row转换为单独的列表。

我的尝试-

> apply(df,1,as.list)

以上解决方案将每个row转换为sublists。但是,在这种情况下,我正在寻找3个单独的列表。

nrow(df) = no. of lists

所需的输出-

> list1
$a
[1] 1

$b
[1] 3

$c
[1] 2

> list2
$a
[1] 2

$b
[1] 4

$c
[1] 6

> list3
$a
[1] 9

$b
[1] 5

$c
[1] 7

1 个答案:

答案 0 :(得分:1)

您可以使用byas.list

out <- by(df, 1:nrow(df), as.list)
out
#1:nrow(df): 1
#$a
#[1] 1
#
#$b
#[1] 3

#$c
#[1] 2

#------------------------------------------------------------------------------ 
#1:nrow(df): 2
#$a
#[1] 2

#$b
#[1] 4

#$c
#[1] 6

#------------------------------------------------------------------------------
#1:nrow(df): 3
#$a
#[1] 9

#$b
#[1] 5

#$c
#[1] 7

这将创建一个by类的对象。因此,您可以在最后致电unclass(out)