是否有更容易(即一行代码而不是两行!)的方式来执行以下操作:
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
我想做的是:
答案 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'))