2017-05-11 33 views
0

我对R相对比较陌生,需要创建一个函数,在每次调用之后,数据框都会附加到另一行。在R中绑定新行的函数

这是空数据框应该是(又名其行标题):

Percent Category Word 

功能是

output <- function(category, word) 

这将最终计算出基于这些话的百分比。

所以,举例来说,类别(肺,女)将产出的51%,而因此产生的数据帧将

Percent Category Word 
51  Lung  Female 

如果我要重新运行的功能,让我们说类(血,男),其百分比是71,我想所产生的数据帧是

Percent Category Word 
51  Lung  Female 
71  Blood Male 

,我会基本上要多次我想运行的功能,不断追加行。但是,数据帧只是本地的而不是全局的,因此当我运行该函数时,如果要输出数据帧,则该行只出现在控制台中,但在我的全局环境中不显示任何内容。这是我(省略FXN的计算百分比开始):

output <- function(category, word) 
{ 
    row <- data.frame(percent, category, word) 
    # row <- rbind(row, row) # I don't know... 
    return (row) 
} 

鉴于函数计算百分比变化,我将如何创建从那里这个功能追加行对全球环境访问的数据帧它?我应该在全球环境中创建一个数据框,然后尝试一下吗?

+3

你CA做与函数外'DF < - rbind(DF,输出( “龙”, “女”))' – HubertL

+0

@ HubertL的建议应该工作,但是逐行添加行通常比其他方法慢得多。如果您的数据足够大,以至于您遇到了使用此方法的速度问题,那么您可能会问一个新问题,寻求帮助改进它。 – Marius

回答

0

使用nrow来计算data.frame的行数的解决方案。

df<-data.frame(percent=as.numeric(), category=as.character(), word=as.character(), 
stringsAsFactors = F) #setting up empty data.frame 

output <- function(df,category, word){ 
    percent<-12 #fictious percentage 
    df[nrow(df)+1,]<- data.frame(percent=percent, category=category, word=word, 
    stringsAsFactors = F) #adding the information to the next row of the data.frame 
    return(df) 
} 

df<-output(df,"bla","bla") 
df<-output(df,"sdfd","dfsdf") 
df<-output(df,"xfdfd","qweqweqw") 
df<-output(df,"asdad","etwt") 

输出:

#percent category  word 
#1  12  bla  bla 
#2  12  sdfd dfsdf 
#3  12 xfdfd qweqweqw 
#4  12 asdad  etwt