将数据框的每一列提取到一个对象中

时间:2013-01-19 15:53:30

标签: r

我有一个包含许多列的数据框,名为foobar等。

我想提取数据框的每一列,以分隔名为foobar的对象,依此类推。是否有自动方式在R中执行此操作?

工作示例:

mock <- structure(list(
x = structure(1:3, .Label = c("1", "2", "3"), class = "factor"), 
y = structure(1:3, .Label = c("A", "B", "C"), class = "factor"), 
z = structure(c(1L, 1L, 2L), .Label = c("0", "1"), class = "factor")), 
.Names = c("x", "y", "z"), row.names = c(NA, -3L), class = "data.frame")

输出:

> mock
  x y z
1 1 A 0
2 2 B 0
3 3 C 1

如何编写一个循环,从该数据框的三列创建对象xyz

1 个答案:

答案 0 :(得分:2)

> for (i in 1:ncol(mock)) {
+   assign(names(mock)[i],mock[,i])
+ }
> x
[1] 1 2 3
Levels: 1 2 3
> y
[1] A B C
Levels: A B C
> z
[1] 0 0 1
Levels: 0 1

但是,您应该小心使用assign。您可以使用attach(mock)获得几乎相同的结果,这是可逆的(detach())并且无意中无意中覆盖现有变量(它只是掩盖它们)。