我有一个数据集,需要在其中执行以下步骤进行分析。
a <- with(iris, sum(Petal.Length[Petal.Width<0.2]))
b <- with(iris, sum(Petal.Length[Petal.Width<0.7]))
cc <- with(iris, sum(Petal.Length[Petal.Width<1]))
d <- with(iris, sum(Petal.Length[Petal.Width<3]))
e<-(b-a)
f<-(cc-b)
g<-(d-cc)
newdata <- data.frame(x=c(1,2,3),y=c(e,f,g))
我现在需要通过将Petal.Length
替换为Sepal.Length
等等来计算相同的值。因此,我为此编写了一个函数,但在使用h<- myfun(iris,Sepal.Length)
时,我得到了错误'Sepal.Length' not found
。感谢任何帮助。
myfun <- function(mydata,myvar){
res <- NULL
a <- with(mydata, sum(myvar[Petal.Width<0.2]))
b <- with(mydata, sum(myvar[Petal.Width<0.7]))
cc <- with(mydata, sum(myvar[Petal.Width<1]))
d <- with(mydata, sum(myvar[Petal.Width<3]))
e<-(b-a)
f<-(cc-b)
g<-(d-cc)
res <- c(e,f,g)
}
2条答案
按热度按时间w8biq8rn1#
这是一个简单的修复。记住把返回放在函数中。当你传递输入参数时,myvar应该是字符的形式
如果你想用R中已有的函数来写它,你可以使用
cut
,它把一个数值变量分成若干个区间,然后通过sapply
为每个区间加上Petal.Length。9w11ddsr2#
试试看
导致