我尝试使用相同的列更改多个不同数据框中的值:
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
内的变量?
答案 0 :(得分:2)
您可以考虑使用Tidyverse的一些工具。这是解决您问题的快速简便方法。管道%>%
只是将一个函数的输出提供给下一个函数。我接受df
然后使用函数mutate
向数据框添加名为Col5
的新列。使用mutate函数,您可以调用列而无需使用$
,因为我们已经指定我们对上面代码中的df
感兴趣,所以它更清晰一些。然后我为Col6
做同样的事情。我们使用顶部的output
将其全部保存到<-
。
library(tidyverse)
output <- df %>%
mutate(Col5=Col1/Col2) %>%
mutate(Col6=Col4/Col3)