我想写一个函数来绘制所需的模型冰箱'每日价格。 以下是我的问题的一个小例子:
data <- read.table(header=TRUE,text='
date price model
2012-01-01 100 Frenchdoor
2012-01-01 150 Bottom
2012-01-02 110 Frenchdoor
2012-01-02 160 Bottom
')
这是我的迷你功能:
model <- function(model){
data <- data[data$model=='model',]
return(data)
}
但是当我尝试使用该功能时,
model(Frenchdoor)
它不返回任何数据:<0 rows>
(或0-length row.names
)
没有功能,它可以正常工作:
data <- data[data$model=='Frenchdoor',]
data
如何更正我的功能?
答案 0 :(得分:0)
我在上面的函数中看到了两个问题。
首先,通过将 model 放在函数中的单引号中,您将函数传递给字符串'model',而不是语句模型(Frenchdoor)中提供的参数值。
其次,如果您明确引用字符串而不是R对象,则应该将函数传递给字符串。因此,模型('Frenchdoor')将起作用,但模型(Frenchdoor)将不起作用。
考虑以下修订:
data <-read.table(header=TRUE, text='
date price model
2012-01-01 100 Frenchdoor
2012-01-01 150 Bottom
2012-01-02 110 Frenchdoor
2012-01-02 160 Bottom
')
model <- function(model){
data <- data[data$model==model,]
return(data)
}
最后,提供与函数名称不同的参数名称是最佳实践。因为model是数据框中的名称,所以我建议重命名该函数。总之,像这样的东西会更清洁:
FilterByModel <- function(model){
data <- data[data$model==model,]
return(data)
}