R写函数将列绑定到数据帧

时间:2017-07-04 03:03:49

标签: r function cbind

我编写了一个函数,它通过现有数据框的列上的子字符串操作创建值向量:

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 ...

我写了第二个函数将这个向量绑定到原始数​​据框:

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

但是,当我运行此功能时:

addParent(task2017.06.28)

结果返回没有新列的原始文件。

我在这里缺少什么?

1 个答案:

答案 0 :(得分: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)
}