如何使用此结构创建包含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结合起来呢?
有优雅且更好的方法吗?
答案 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)))