【发布时间】:2011-04-24 18:15:59
【问题描述】:
我是 R 新手。
我有一个 Data.frame,其中有一列名为“Symbol”。
Symbol
1 "IDEA"
2 "PFC"
3 "RPL"
4 "SOBHA"
我需要将其值存储为向量 (x = c("IDEA","PFC","RPL","SOBHA"))。哪种方式最简洁?
【问题讨论】:
我是 R 新手。
我有一个 Data.frame,其中有一列名为“Symbol”。
Symbol
1 "IDEA"
2 "PFC"
3 "RPL"
4 "SOBHA"
我需要将其值存储为向量 (x = c("IDEA","PFC","RPL","SOBHA"))。哪种方式最简洁?
【问题讨论】:
your.data <- data.frame(Symbol = c("IDEA","PFC","RPL","SOBHA"))
new.variable <- as.vector(your.data$Symbol) # this will create a character vector
VitoshKa 建议使用以下代码。
new.variable.v <- your.data$Symbol # this will retain the factor nature of the vector
你想要什么取决于你需要什么。如果您使用此向量进行进一步分析或绘图,保留向量的因子性质是一个明智的解决方案。
这两种方法有何不同:
cat(new.variable.v)
#1 2 3 4
cat(new.variable)
#IDEA PFC RPL SOBHA
【讨论】:
Roman Luštrik 提供了一个很好的答案,但是,$ 表示法通常很难在管道中使用。在管道中,使用dplyr 函数pull()。
# setting up
library(tidyverse)
# import tidyverse for dplyr, tibble, and pipe
df <- data.frame(Symbol = c("IDEA","PFC","RPL","SOBHA"))
> df
Symbol
1 IDEA
2 PFC
3 RPL
4 SOBHA
现在数据框已经设置好了,我们将首先对数据框进行一些随机变异,以表明它可以在管道中工作,最后我们将使用pull()。
myvector <- df %>%
mutate(example_column_1 = 1:4, example_column_2 = example_column_1^2) %>% #random example function
arrange(example_column_1) %>% #random example function
pull(Symbol) # finally, the pull() function; make sure to give just the column name as an argument
您甚至可以在 pull() 函数之后进一步操作管道中的向量。
> myvector
[1] IDEA PFC RPL SOBHA
Levels: IDEA PFC RPL SOBHA
> typeof(myvector)
[1] "integer"
typeof(myvector) 返回整数,因为这就是 因子 的存储方式,因子的不同级别存储为整数(我认为至少它们是这样存储的)。如果要转换为字符向量,只需使用as.character(myvector)。
总之,当您想在管道中从数据框或小标题中提取向量时,请使用dplyr 的pull() 函数(并仅输入要提取的列名) em>。
【讨论】: