背景
很抱歉,如果这是重复,我无法找到与此问题完全匹配的内容。 因此,作为更大函数的一部分,我试图在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()来做一些奇特的事情,但实际上我想了解发生了什么,并且怀疑。
答案 0 :(得分:2)
您不能将字符变量用于美元符号。试试这个:
data(iris)
iris_test <- function(dataset, var1, var2) {
data <- dataset
data$length_width <- data[[var1]]/data[[var2]]
return(data)
}