2017-05-11 47 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