1. ホーム
  2. r

[解決済み] [Solved] data.frameのカラムをベクトルに変換する?

2022-04-23 04:58:18

質問

次のようなデータフレームがあります。

a1 = c(1, 2, 3, 4, 5)
a2 = c(6, 7, 8, 9, 10)
a3 = c(11, 12, 13, 14, 15)
aframe = data.frame(a1, a2, a3)

列の1つをベクトルに変換するために以下を試しましたが、うまくいきません。

avector <- as.vector(aframe['a2'])
class(avector) 
[1] "data.frame"

私が思いついた解決策はこれだけですが、もっと良い方法があるはずだと思います。

class(aframe['a2']) 
[1] "data.frame"
avector = c()
for(atmp in aframe['a2']) { avector <- atmp }
class(avector)
[1] "numeric"

上記の語彙がずれているかもしれませんので、その場合はご指摘ください。 さらに、ここで起こっていることの説明があればありがたいです(例えば、Pythonや他の言語と関連付けると助かります!)。

どのように解決するのですか?

私は間違いを犯さないように説明しようと思っていますが、これはコメントで説明の一つや二つを呼び起こすに違いありません。

データフレームはリストです。データフレームをカラム名と [ である。 サブリスト (またはサブデータ・フレーム)。実際の原子カラムが必要な場合は、次のようにします。 [[ または、(私にとって)やや紛らわしいのですが、次のようにすることもできます。 aframe[,2] これはサブリストではなくベクトルを返します。

そこで、このシーケンスを実行してみると、もしかしたら物事が明確になるかもしれません。

avector <- as.vector(aframe['a2'])
class(avector) 

avector <- aframe[['a2']]
class(avector)

avector <- aframe[,2]
class(avector)