R-在循环中创建一个包含2行的数据帧

时间:2016-10-22 09:25:23

标签: r

如何使用此结构创建包含2行的数据框?

X1  Y1 Calc1  X2  Y2 Calc2 … Xn  Yn  Calcn
1   4  0.25   2   5  0.4     i   i+3 i/i+3

我尝试使用此代码:

dataRowTemp<-numeric(length = 0)
dataRow<-numeric(length = 0)
headerRowTemp<-character(length = 0)
headerRow<-character(length = 0)

    for (i in  1:150){
      X<- i
      Y<- i+3
      Calc <- X/Y
      dataRowTemp <- c(X,Y,Calc)
      dataRow<-c(dataRow,dataRowTemp)
      headerRowTemp <- paste(c("X", i),c("Y", i),c("Calc", i),sep='')
      headerRow<-c(headerRow,headerRowTemp)
    }

不幸的是,我无法创建一个正确的标题(titleRow),我怎样才能将它们与data.frame结合起来呢?

有优雅且更好的方法吗?

1 个答案:

答案 0 :(得分:1)

构建一个在每次迭代中使用的函数。

myfun <- function(i) {
  X <- i
  Y <- i + 3
  c(X = X, Y = Y, Calc = X/Y)
}

设置迭代次数。

n <- 150

将函数应用于从1到n的数字,使用matrix(..., nrow = 1)将输出存储在仅1行的矩阵中,并将其转换为data.frame(因为它就是你所说的你瞄准)。

mydf <- data.frame(matrix(sapply(seq_len(n), myfun), nrow = 1))

在循环中使用paste0以迭代方式为data.frame的列分配名称。

names(mydf) <- c(sapply(seq_len(n), function(i) paste0(c('X', 'Y', 'Calc'), i)))