TTG
请问:
假设有一个数据框
x=1:16;dim(x)=c(4,4);x=as.data.frame(x)
如何将其中一行的数据以数值向量的形式返回,而不是以数据框的形式?
TTG
难道非得用as.matrix(),再返回?
leffgh
x[1,]就可以返回第一行了吧,x[,1]返回第一列,
是这个意思吗
yihui
2楼说的没错,不太明白楼主想要干什么
TTG
命令写错了一点,如首贴,将x定义为数据框后,x[,1]给的是一个数值向量,而x[1,]给的是一个数据框,两者的属性是不一样的。
rtist
data.frame的定义本身就说明它只保证每一列是同样类型的数据
所以x[1,]不会强制变成任何一种普通向量——他有可能一部分是字符一部分是数值。
相反,matrix则一定是同样类型的数据。
如果你确信你所取的部分数据是同样类型的,且一共也取不了几行,unlist之即可。如果你需要对每一行都这样做,那么选择用data.frame是效率很低的,应该用matrix。
TTG
明白了,谢谢。