使用函数更改数据框值

时间:2017-09-28 04:20:28

标签: r function dataframe

我尝试使用相同的列更改多个不同数据框中的值:

   ColA  ColB  Col1  Col2  Col3  Col4
1  "A"   "A"      0   0.5   1.1     0
2  "A"   "B"    3.5   3.0   3.1     0
.  ...   ...    ...   ...   ...   ...

ColA和ColB是因素,但我不知道这是否重要。这是我的功能:

x <- data.frame(ColA <- factor(...), ...)
y <- data.frame(...)

my.fn <- function(df) {
  df$Col5 <<- df$Col1 / df$Col2
  df$Col6 <<- df$Col4 / df$Col3
}

my.fn(x)
my.fn(y)

但它给了我错误:

Error in df$Col5 <<- df$Col1/df$Col2 :
  object 'df' not found

如何使用函数引用数据框df内的变量?

1 个答案:

答案 0 :(得分:2)

您可以考虑使用Tidyverse的一些工具。这是解决您问题的快速简便方法。管道%>%只是将一个函数的输出提供给下一个函数。我接受df然后使用函数mutate向数据框添加名为Col5的新列。使用mutate函数,您可以调用列而无需使用$,因为我们已经指定我们对上面代码中的df感兴趣,所以它更清晰一些。然后我为Col6做同样的事情。我们使用顶部的output将其全部保存到<-

library(tidyverse)

output <- df %>%
  mutate(Col5=Col1/Col2) %>%
  mutate(Col6=Col4/Col3)