2015-06-18 167 views
2

,我有以下的数据帧:移调一个单列多行

a<-c(2,1,3,6,7) 
b<-c(3,1,4,5,8) 
c<-c(9,2,5,4,7) 



d<- data.frame(a,b,c) 
     a b c 
    1 2 3 9 
    2 1 1 2 
    3 3 4 5 
    4 6 5 4 
    5 7 8 7 

而且我想用一个单个列转置五行,像这样:

2 
3 
9 
1 
1 
2 
3 
4 
5 
6 
5 
4 
7 
8 
7 

回答

1

试试这个:

matrix(t(d),ncol=1) 

移调data.frame并重新定义为具有1列的矩阵。

感谢@DavidArenburg,我们也可以这样做:

c(t(d)) 
+0

我会把这个放在这里,因为我不知道他们想要什么'c(t(d))' –

0

让我们假设存在需要在你提到的方式操作的2-d阵列。让我们调用数组sample [rows] [cols],其中行和列是井,行和列的大小。我将给出一个C++函数的示例代码,它将返回最终的列向量,如下所示,它将是一个基本上可以用作所需列向量的数组。

int ret_col(int sample[][]) 
    { 
      int i,j,k=0; 
      int final_column[rows*cols]; 

      for(i=0;i<cols;i++) 
      { 
       for(j=0;j<rows;j++) 
       { 
        final_column[k++]=a[j][i]; 
       } 
      } 

      return final_column; 
    } 

如果有什么,这不是在我的代码清晰,请随时提出。希望这有助于! :)

+0

问题是关于'R'而不是'C'的代码。 – zx8754

+1

对不起,我对这门语言并不熟悉,我希望你能够将我用C++表达的逻辑应用到R中。从我的经验来看,它不是重要的语言,而是算法。无论如何,抱歉不注意这个问题。 –

+0

同意逻辑,还有[Rcpp](http://cran.r-project.org/web/packages/Rcpp/index.html)包,它可以用来包装R内的C代码。 – zx8754