中性元素与数据帧cbind

时间:2017-06-07 09:18:17

标签: r cbind

我可以做以下事情:

<style>
  
.demo {
  margin: 0 auto;
  padding-top: 64px;
  max-width: 640px;
  width: 94%;
}

.footer {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  padding: 1rem;
  background-color: #efefef;
  text-align: center;
}
</style>
<div class="demo">
  <h1>CSS “Always on the bottom” Footer</h1> 
</div>


<div class="footer">This footer will always be positioned at the bottom of the page, but <strong>not fixed</strong>
</div>

当我使用数据框时,它会给我一个错误

a <- rep(5,5)

> cbind(6,a)
       a
[1,] 6 5
[2,] 6 5
[3,] 6 5
[4,] 6 5
[5,] 6 5
> cbind(NULL,a)
     a
[1,] 5
[2,] 5
[3,] 5
[4,] 5
[5,] 5

什么是中性元素,以便:

> cbind(NULL,mtcars)

Error in data.frame(..., check.names = FALSE) :    arguments imply differing number of rows: 0, 32

编辑:

我有一个类似于cbind(IDCOL,DF)的代码。在函数中,IDCOL也可以是非Exisiting,因此只需将IDCOL设置为中性元素就可以了,因此代码仍然可以顺利运行。

1 个答案:

答案 0 :(得分:0)

您正在寻找的东西不太可能存在。

cbindrbind命令的文档:

  

如果有多个矩阵参数,则它们必须具有相同数量的列(或行),这将是结果的列数(或行数)。如果所有参数都是向量,则结果中的列(行)数等于最长向量的长度。较短参数中的值将被回收以实现此长度(如果它们仅按小部分回收,则会发出警告)。 ...对于cbind(rbind),除非结果为零行(列),否则忽略零长度(包括NULL)的向量,以实现S兼容性。

因此,我建议使用if-else条件:

if(length(IDCOL) > 0) {
   cbind(IDCOL, df) # make sure lengths are identical
} else {
   df # do whatever you want here
}