一个班轮想要:创建数据框并给出colnames:R data.frame(...,colnames = c(“a”,“b”,“c”))

时间:2016-04-14 03:28:39

标签: r

是否有更容易(即一行代码而不是两行!)的方式来执行以下操作:

results <- as.data.frame(str_split_fixed(c("SampleID_someusefulinfo.countsA" , "SampleID_someusefulinfo.countsB" , "SampleID_someusefulinfo.counts"), "\\.", n=2))
names(results) <- c("a", "b")

类似的东西:

results <- data.frame(str_split_fixed(c("SampleID_someusefulinfo.countsA" , "SampleID_someusefulinfo.countsB" , "SampleID_someusefulinfo.counts"), "\\.", n=2), colnames = c("a", "b"))

我这么做很多,并且真的很想有办法在一行代码中使用它。

/data.table也可以,如果它比基础数据更容易做到。框架/

澄清:

我的预期输出(通过在顶部运行两行代码来实现 - 我希望它是一个 - 那就是它!!! )是结构的结果数据框架:

results
                       a      b
1 SampleID_someusefulinfo countsA
2 SampleID_someusefulinfo countsB
3 SampleID_someusefulinfo  counts

我想做的是:

  1. 从矩阵或某些内容创建数据框(例如矩阵的玩具代码(c(1,2,3,4),nrow = 2,ncol = 2)我在我写的第一个例子中提供)
  2. 指明 同一行 我希望数据框的列名是什么

2 个答案:

答案 0 :(得分:13)

setNames()

周围使用data.frame
setNames(data.frame(matrix(c(1,2,3,4),nrow=2,ncol=2)), c("a","b"))
#  a b
#1 1 3
#2 2 4

?setNames

  

一个便利函数,用于设置对象上的名称并返回对象

> setNames
function (object = nm, nm) 
{
    names(object) <- nm
    object
}

答案 1 :(得分:5)

我们可以使用dimnames中的matrix选项,因为OP正在使用matrix来创建数据。

data.frame(matrix(1:4, 2, 2, dimnames=list(NULL, c("a", "b"))))

或者

`colnames<-`(data.frame(matrix(1:4, 2, 2)), c('a', 'b'))