r - 将 data.frame 列转换为向量?

标签 r dataframe vector type-conversion

我有一个数据框,例如:

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 - 将 data.frame 列转换为向量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7070173/

相关文章:

r - 在Shiny中使用reactiveFileReader函数

r - split_wider 其中前半部分成为列名称,后半部分成为单元格值

python - 我想以更好的结构打印输出

c++ - 如何在向列表中添加项目时遍历列表

java - 访问存储在 vector 中的对象的变量

r - 在 igraph(R 包)中反转有向图(转置图)中的边

r - 从 R 中的数据框中获取单个值

r - 通过匹配给定因子水平的变量/列选择数据框中的变量/列

按 id 和变量类型 reshape 数据框

c++ - 使用 end() 迭代到 std::vector 的最后一个元素--