【问题标题】:Express the following code in r: rbind(data[1,]),data[2,],....,data[i,])在 r 中表达以下代码:rbind(data[1,]),data[2,],....,data[i,])
【发布时间】:2014-09-16 10:50:38
【问题描述】:

我在 R 中表达以下代码时遇到了困难。基本思想是我想 r(ow) 绑定数据框中的每个行元素,就像这样:

#transpose every horizontal element into a single vertical column 
#notice: the value for "length(data[,1])" is large so that cant work with sth like rbind(A,B,C,D) 
#let's say: data<-as.data.frame(matrix(1:100000,nrow=5000,ncol=20, byrow=F))

for(i in 1:length(data[,1])){
trans<-rbind(t(data[1,]),t(data[2,]),....,t(data[i,]))
}

或者

for(i in 1:length(data[,1])){
trans<-rbind(t(data[1:i,]))}

或者

for(i in 1:length(data[,1])){
trans<-rbind(t(data[c(1:i),]))}

但这些都不起作用。

【问题讨论】:

  • 为什么?这只会再次返回您的 data.frame。
  • @Jacob Green 我更新了解决方案

标签: r loops for-loop rbind


【解决方案1】:

如果您想从数据集中转换为单列:

 dat1 <- data.frame(Col1=1:5, Col2=6:10, Col3=11:15)
 as.data.frame(matrix(t(dat1)))
 #   V1
 #1   1
 #2   6
 #3  11
 #4   2
 #5   7
 #6  12
 #7   3
 #8   8
 #9  13
 #10  4
 #11  9
 #12 14
 #13  5
 #14 10
 #15 15

或者

 data.frame(V1=c(t(dat1)))

更新

你可以这样做:

 newdata <- vector('numeric')
 for(i in seq_len(nrow(dat1))){ newdata <-c(newdata, unlist(dat1[i,], use.names=FALSE))}
 as.data.frame(newdata)

【讨论】:

  • 谢谢你先生..我真的很感激..我还有一个问题..有什么方法可以正确编码以下内容:for(i in 1:1000){newdata
  • @Jacob Green 根据我提供的数据集,预期的结果是什么?谢谢。另外, data(1) 是什么意思?数据是列还是行?
  • data(1) 是列....或者也可以是向量..实际上没关系。我希望知道的是如何在上面的代码中编写像“,....”这样的代码......(当然你的答案是我正在寻找的那个......非常感谢你)
猜你喜欢
  • 1970-01-01
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 2022-12-02
  • 1970-01-01
  • 2016-08-21
  • 1970-01-01
  • 2019-02-27
相关资源
最近更新 更多