2017-07-04 74 views
2

我寫,其經由一個子動作上的現有數據幀的一列產生的值的矢量的函數:R寫入功能結合柱到數據幀

fetchParent <- function(column){ 
    substr(column,1,regexpr(":", column)-1) 
} 

此功能的一個例子的運行是:

fetchParent(task2017.06.28$"Work Product") 

這將返回一個矢量:

[1] "DE10946" "DE5909" "US30637" "US31460" "DE16399" "DE18046" "DE18841" "DE18904" "DE19138" 
[10] "US48201" "US48314" "US48315" "US48316" "US48317 ... 

我寫的第二函數,以該矢量結合ORI ginal數據幀:

addParent <- function(df){ 
    df <- cbind(df,fetchParent(df$"Work Product")) 
} 

然而,當我運行這個功能:

addParent(task2017.06.28) 

結果返回原來沒有新列。

我在這裏錯過了什麼?

+4

你的'addParent(...)'結果分配給一個對象?像'df2 < - addParent(...)'? – thelatemail

回答

0

你必須返回新data.frame:

addParent <- function(df){ 
    return(cbind(df,fetchParent(df$"Work Product"))) 
} 

在你fetchParent()函數這個時並不需要,因爲你不SUBSTR的輸出分配到任何東西。

所以這會工作,以及:

addParent <- function(df){ 
    cbind(df,fetchParent(df$"Work Product")) 
} 

addParent <- function(df){ 
    df <- cbind(df,fetchParent(df$"Work Product")) 
    return(df) 
} 
+0

謝謝。我昨晚在臨睡前不久發佈了這個消息。正如我經常發生的那樣,當我躺在那裏思考這件事時,我認爲這是非常基本的事情,但它超出了我的理解範圍。我不會忘記return()函數,再次感謝。 –

+0

不客氣!如果答案回答您的問題,請將其標記爲「接受答案」。 – herbaman