2

foobarなどの名前の多くの列を持つデータフレームがあります。

fooデータフレームの各列を抽出して、などと呼ばれるオブジェクトを分離したいと思いますbar。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

このデータフレームの3つの列から、オブジェクトxを作成するループを作成するにはどうすればよいですか?yz

4

1 に答える 1

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())であり、既存の変数を意図せずに上書きすることはありません(単にそれらをマスクするだけです)。

于 2013-01-19T15:59:08.810 に答える