首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >是否将data.frame列转换为向量?

是否将data.frame列转换为向量?
EN

Stack Overflow用户
提问于 2011-08-16 04:08:36
回答 11查看 459.1K关注 0票数 193

我有一个数据帧,例如:

代码语言:javascript
运行
复制
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)

我尝试使用以下方法将其中一列转换为向量,但不起作用:

代码语言:javascript
运行
复制
avector <- as.vector(aframe['a2'])
class(avector) 
[1] "data.frame"

这是我能想到的唯一解决方案,但我假设有更好的方法来做到这一点:

代码语言:javascript
运行
复制
class(aframe['a2']) 
[1] "data.frame"
avector = c()
for(atmp in aframe['a2']) { avector <- atmp }
class(avector)
[1] "numeric"

注意:我上面的词汇表可能有问题,如果是的话,请纠正我。我还在学习R的世界。另外,任何关于这里发生的事情的解释都是值得感谢的(例如,与Python或其他语言相关会有所帮助!)

EN

回答 11

Stack Overflow用户

回答已采纳

发布于 2011-08-16 04:19:35

我将尝试在不犯任何错误的情况下解释这一点,但我打赌这将吸引评论中的一两个澄清。

数据帧是一个列表。当您使用列名和[设置数据框子集时,您得到的是一个子列表(或子数据框)。如果需要实际的原子列,可以使用[[,或者(对我来说)有点困惑的是,可以使用aframe[,2],它返回一个向量,而不是一个子列表。

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

代码语言:javascript
运行
复制
avector <- as.vector(aframe['a2'])
class(avector) 

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

avector <- aframe[,2]
class(avector)
票数 238
EN

Stack Overflow用户

发布于 2018-01-09 01:21:10

现在有一种使用dplyr来完成此操作的简单方法。

代码语言:javascript
运行
复制
dplyr::pull(aframe, a2)
票数 63
EN

Stack Overflow用户

发布于 2011-08-16 04:20:05

您可以使用$提取:

代码语言:javascript
运行
复制
class(aframe$a1)
[1] "numeric"

或双方括号:

代码语言:javascript
运行
复制
class(aframe[["a1"]])
[1] "numeric"
票数 34
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7070173

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档