2013-04-08 68 views
23

考虑使用自定义行名称的数据帧:打印与行名称数据帧的一列

> data <- data.frame(a=1:3,b=2:4,c=3:5,row.names=c("x","y","z")) 
> data 
    a b c 
x 1 2 3 
y 2 3 4 
z 3 4 5 

如果我选择多列,R打印他们与该行的名字一起:

> data[,c("a","c")] 
    a c 
x 1 3 
y 2 4 
z 3 5 

但如果我选择只有一列,R打印它作为一个简单的载体,没有行名称:

> data[,"c"] 
[1] 3 4 5 

我的问题是,我如何告诉R打印一列以同样的方式打印多列,即与行名称

+2

@ user1981275的答案有效,因为当你使用[,“c”]进行子集化时,R会尝试简化对象类。告诉他不要“丢弃”它,保留你的data.frame类。 – 2013-04-08 11:37:28

回答

32

可以使用drop参数(见?'['):

data[,"c", drop=FALSE] 

这是否帮助?

+0

是的,谢谢! – 2013-04-08 11:05:39

+0

这与'subset(data,select =“c”)'类似,并且这会生成一列数据帧。你知道如何获得一个命名的字符矢量吗? (cc @RomanCheplyaka) – 2013-12-04 19:30:17

+0

我只能想到apply(data [,“c”,drop = FALSE],1,c)'但也许会有一个更简单的解决方案。 – user1981275 2013-12-05 11:46:15