本文介绍了命名列表到/来自Data.Frame的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找一种在以下格式的列表之间来回的快速方式:

I'm looking for a quick way to get back and forth between a list of the following format:

$`a`
  [1] 1 2 3
$`b`
  [1] 4 5 6

以下格式的数据框架:

   name x
 1    a 1
 2    a 2
 3    a 3
 4    b 4
 5    b 5
 6    b 6

(在这种情况下,不太在乎这些列的名称)。

(Don't really care what the names of the columns are, in this case.)

以上是R格式使用的数据框:

Here's the data frame used above in R-format:

df <- data.frame(name=c(rep("a",3),rep("b",3)), x=c(1:3,4:6))

再次,我正在寻找两个单独的操作:一个将上述数据框架转换为列表,另一个将其转换回数据框架。

Again, I'm looking for two separate operations: one to convert the above data.frame to a list, and another to convert it back to a data.frame.

推荐答案

使用 stack unpack 在基地R:

x <- data.frame(a=1:3, b=4:6)

x
  a b
1 1 4
2 2 5
3 3 6

使用 stack 从宽到高,即将向量叠加在一起。

Use stack to from wide to tall, i.e. stack the vectors on top of one another.

y <- stack(x)
y
  values ind
1      1   a
2      2   a
3      3   a
4      4   b
5      5   b
6      6   b

使用 unpack 做相反的。

unstack(y)
  a b
1 1 4
2 2 5
3 3 6






如果您的数据结构比您描述的更复杂, stack unpack 可能不再适合。在这种情况下,您必须在基础R中使用 reshape ,或 fusion dcast reshape2


If your data structure is more complicated than you described, stack and unstack may no longer be suitable. In that case you'll have to use reshape in base R, or melt and dcast in package reshape2.

这篇关于命名列表到/来自Data.Frame的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-14 19:44