【问题标题】:R write function to bind column to dataframeR编写函数将列绑定到数据框
【发布时间】:2017-07-04 03:03:48
【问题描述】:

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

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)

结果返回原来的没有新列。

我在这里错过了什么?

【问题讨论】:

  • 您是否将addParent(...) 的结果分配给了一个对象?喜欢df2 &lt;- addParent(...)

标签: r function cbind


【解决方案1】:

你必须返回新的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)
}

【讨论】:

  • 谢谢。我昨晚在睡觉前不久发布了这个。正如经常发生的那样,当我躺在那里思考这个问题时,我认为这是非常基本的东西,但它超出了我的掌握。我不会很快忘记 return() 函数,再次感谢。
猜你喜欢
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
  • 2012-09-06
  • 1970-01-01
  • 2018-01-03
  • 1970-01-01
相关资源
最近更新 更多