在功能上添加基于另外两个分区的新列

时间:2015-07-03 10:17:23

标签: r

背景

很抱歉,如果这是重复,我无法找到与此问题完全匹配的内容。 因此,作为更大函数的一部分,我试图在data.frame中添加一个新列,它基本上是该data.frame中两个变量的分区。

例如:

data(iris)

iris_test <- function(dataset, var1, var2) {
  data <- dataset
  data$length_width <- data$var1/data$var2
  return(data)
}

如果我然后使用此功能

iris <- iris_test(iris, 'Petal.Length', 'Petal.Width')

我希望使用data$length_width生成一个新列,但代码正在破坏。

 Error in `$<-.data.frame`(`*tmp*`, "length_width", value = numeric(0)) : 
  replacement has 0 rows, data has 150 

我怀疑你可以用paste()或formula()来做一些奇特的事情,但实际上我想了解发生了什么,并且怀疑。

1 个答案:

答案 0 :(得分:2)

您不能将字符变量用于美元符号。试试这个:

data(iris)

iris_test <- function(dataset, var1, var2) {
  data <- dataset
  data$length_width <- data[[var1]]/data[[var2]]
  return(data)
}