我在网络上研究了自己的问题,但无济于事。基本上,我有一个dataframe
,其中包含混合数据类型的列。
ID Email SSN
1 A 3
. . .
. . .
我想要vector
格式的该行的list
。我尝试使用unlist
,但返回以下结果:
Email SSN Phone
2 1 1
如何获取R
来返回c(1, A, 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