我正在尝试编写一个向现有dataFrame添加新行的R函数。
这是我的代码(R newbie here):
qRows <- data.frame( RowQuery = character(0), "BackTest P&L" = character(0), stringsAsFactors=FALSE)
# add row to dataFrame
qRows[nrow(qRows) + 1, ] <- c("sp500(vwpc) | abc(30) | qcume", "12%")
#define function to add new row to dataFrame
Q <- function(data, y){
data[nrow(data) + 1, ] <- c(y,"88")
}
# run new function
Q(qRows, "newQuery")
#examine output: but no new row added
qRows
代码运行时没有错误,但没有添加新行。
答案 0 :(得分:0)
两项变更:
您需要返回功能输出,然后将输出值分配回qrows。
qRows <- data.frame( RowQuery = character(0), "BackTest P&L" = character(0), stringsAsFactors=FALSE)
# add row to dataFrame
qRows[nrow(qRows) + 1, ] <- c("sp500(vwpc) | abc(30) | qcume", "12%")
#define function to add new row to dataFrame
Q <- function(data, y){
data[nrow(data) + 1, ] <- c(y,"88")
return(data) # <---------------------------------**return data**
}
# run new function
qRows= Q(qRows, "newQuery") #<--------------------- **assign output to qRows**
qRows
<强>输出强>
RowQuery BackTest.P.L
1 sp500(vwpc) | abc(30) | qcume 12%
2 newQuery 88
在您的代码中,Q向data
添加了一个新行。
请注意,新行已添加到变量data
,该变量位于函数Q
的本地,而不是qRows
。
答案 1 :(得分:0)
> #define function to add new row to dataFrame
> Q <- function(data, y){
+ nms <- names(data)
+ dat <- rbind(data, t(c('sp500(vwpc) | abc(30) | qcume','12%')), t(c(y,'88')))
+ names(dat) <- nms
+ return(dat)
+ }
>
> # run new function
> Q(qRows,'newQuery')
RowQuery BackTest.P.L
1 sp500(vwpc) | abc(30) | qcume 12%
2 newQuery 88