R:使用函数向数据框添加新列

时间:2015-04-24 03:48:14

标签: r dplyr

我的数据框df有两列, term 频率。我还有一个术语列表,其中给定的ID存储在名为indices的向量中。为了说明这两个信息,我有以下内容:

> head(indices)
   Term
1    hello
256  i
33   the

此外,对于数据框。

> head(df)
   Term  Freq
1  i     24
2  hello 12
3  the   28

我想在df中添加一个名为TermID的列,它只是向量indices中术语的索引。我尝试过使用dplyr::mutate,但无济于事。这是我的代码

library(dplyr)

whichindex <- function(term){
              ind <- which(indices == as.character(term))
              ind}

mutate(df, TermID = whichindex(Term))

我得到的输出是df,其中有一个名为TermID的新列,但TermID的所有值都相同。

有人可以帮我弄清楚我做错了什么吗?如果你能在[R]中推荐一种更有效的算法,那也很不错。我已经在Python中实现了这一点,但我没有遇到过这样的问题。

提前致谢。

1 个答案:

答案 0 :(得分:6)

怎么样?

df %>% rowwise() %>% mutate(TermID = grep(Term,indices))

w /示例数据:

library(dplyr)
indices <- c("hello","i","the")
df <- data_frame(Term = c("i","hello","the"), Freq = c(24,12,28))

df_res <- df %>% rowwise() %>% mutate(TermID = grep(Term,indices))
df_res

给出:

Source: local data frame [3 x 3]
Groups: <by row>

   Term Freq TermID
1     i   24      2
2 hello   12      1
3   the   28      3