R友好的方式将R data.frame列转换为向量?

我有一个数据框,如:

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)

我试过以下将一列转换为向量,但它不工作:

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],它返回一个向量,而不是一个子列表。

所以尝试运行这个序列,也许事情会更清楚:

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

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

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

转载注明原文:R友好的方式将R data.frame列转换为向量? - 代码日志