删除rownames / colnames / names而不在R中明确地将它们设置为NULL

时间:2013-10-01 12:47:18

标签: r

鉴于此数据:

data <- read.table(text="
   age married house income gender class
1   22       0     0     28      1     0
2   46       0     1     32      0     0
3   24       1     1     24      1     0
4   23       0     1     40      0     1
5   50       1     1     28      0     1
")

每当我获取多个值的一部分时,我也会获得行和/或列名称, 例如:

> data[1, 1:2]
  age married
1  22       0

是否有某种方法可以删除任何名称并使其无名(无标签)而不事先将任何内容显式设置为NULL(或加载到row.names=F等文件中)?

目标只是确保在调用无名(..)之类的东西时不附加任何内容。

# Not OK 
colnames(data) <- NULL
data[1, 1:2]

# OK
nameless(data[1, 1:2])
[1] 22 0

示例:

output
[[1]]
       income                      
     4     36      2      3     NA 

[[2]]
    age             
  1  48   4   5  NA 

3 个答案:

答案 0 :(得分:3)

看起来有点傻,但是怎么样:

unname(unlist(data[1, 1:2]))
#[1] 22 0

答案 1 :(得分:2)

unlist()有一个use.names参数,会删除名称。

unlist(data[1, 1:2], use.names = FALSE)

或者如果返回的所有内容属于同一类型,您可以使用例如as.integer()就可以了:

as.integer(data[1, 1:2])

答案 2 :(得分:0)

从@alexwhan借用unname

unname(c(data1[1,1:2]))
[1] 22  0