将一行数据帧转换为R中的向量

时间:2018-07-24 07:44:57

标签: r dataframe

我在网络上研究了自己的问题,但无济于事。基本上,我有一个dataframe,其中包含混合数据类型的列。

ID Email SSN
 1   A    3
 .   .    .
 .   .    . 

我想要vector格式的该行的list。我尝试使用unlist,但返回以下结果:

Email   SSN Phone 
    2     1     1 

如何获取R来返回c(1, A, 3)

3 个答案:

答案 0 :(得分:0)

data.frame(ID=c("Alex", "Billy"), Email=c("a@b.com","c@d.com"), SSN=c(2,3))
#     ID   Email SSN
#1  Alex a@b.com   2
#2 Billy c@d.com   3
df <- data.frame(ID=c("Alex", "Billy"), Email=c("a@b.com","c@d.com"), SSN=c(2,3))
df[2,]
#     ID   Email SSN
# 2 Billy c@d.com   3
 as.vector(df[2,])
#      ID   Email SSN
# 2 Billy c@d.com   3

答案 1 :(得分:0)

R中的向量不能为混合类型-即,它们不能包含字符串和数字。最好的办法是得到c("1", "A", "3"),因为R将转换为最通用的。为此,请运行:

unlist(df[1,])

请注意,由于臭名昭著的email参数,示例中的stringsAsFactors可能会得到一个整数:

df = data.frame(id = 3, email = "a", phone = 3, stringsAsFactors = FALSE)
unlist(df[1,])

答案 2 :(得分:0)

如果要保留行元素的类,可以使用as.list()

df <- data.frame(var1 = c(1,2),
                 var2 = c("A", "B"),
                 var3 = c(3,4), stringsAsFactors = F)

  var1 var2 var3
1    1    A    3
2    2    B    4

row1 <- as.list(df[1,])

$var1
[1] 1

$var2
[1] "A"

$var3
[1] 3

> sapply(row1, class)
       var1        var2        var3 
  "numeric" "character"   "numeric" 

转置此列表将为您提供具有正确类的1x3矩阵:

> t(row1)
     var1 var2 var3
[1,] 1    "A"  3