考虑具有自定义行名称的数据框:
> 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打印一列的方式与打印多列的方式相同,即的行名?
答案 0 :(得分:34)
您可以使用drop
参数(另请参阅?'['
):
data[,"c", drop=FALSE]
这有帮助吗?
答案 1 :(得分:1)
一种更简单的方法是data['c']
,它将产生相同的输出:
indx c
x 3
y 4
z 5
答案 2 :(得分:-1)
与 data.frames 相比,从 R 中的矩阵获取列似乎保留了它们的(行)名称。我在 R 中发现的(许多!)奇怪的不一致之一......要获得命名向量,其中一个似乎有效:
as.matrix(data['c'])[,1]
或
array(data['c'], dimnames=list(rownames(data)))