我有一个数据框,例如:

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)

我尝试了以下将一列转换为 vector 的方法,但是它不起作用:
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"

注意:我的上述词汇可能已经关闭,因此请纠正我。我仍在学习R的世界。此外,对这里发生的任何情况的任何解释都将受到赞赏(即与Python或其他某种语言有关会有所帮助!)

最佳答案

我将尽一切努力进行解释,但我敢打赌这将在注释中引起一两个澄清。

数据框是一个列表。当使用一列名和[子集一个数据框时,得到的是一个子列表(或一个子数据框)。如果您想要实际的原子列,则可以使用[[,或者(对我而言)有些困惑,您可以执行aframe[,2],它返回一个 vector ,而不是一个子列表。

因此,尝试运行此序列,也许情况会更加清楚:

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

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

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

关于r - 将data.frame列转换为向量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/7070173/

10-10 04:00