我想在R中创建一个函数,它将根据分类变量(一个因子)的级别创建数据框的子集。最终,我的函数将操纵这个子集,但我无法使第一部分工作....
这是我的代码以及使用该功能时得到的结果:
> Petite13.b [1:5, ]
Numero Espece Arbre Nb
1 1 BOP Brout_mort 1
61 1 BOP Mutile 2
130 1 SAB Mutile 1
213 1 BOP Vivant 1
439 1 SAB Vivant 2
> Creation.PLL <- function(Esp, Arb, Source){
+ x <-Source[Source$Espece== "Esp" & Source$Arbre== "Arb", ]
+ return(x)
+ }
>
> Creation.PLL(SAB, Vivant, Petite13.b)
[1] Numero Espece Arbre Nb
<0 lignes> (ou 'row.names' de longueur nulle)
我的数据框(此处名为Source
将始终包含一个名为Source$Espece
的变量,另一个名为Source$Arbre
的变量。
感谢。
答案 0 :(得分:1)
您需要在函数中省略"
个。但是你需要在函数调用中添加"
。
Creation.PLL <- function(Esp, Arb, Source){
Source[Source$Espece == Esp & Source$Arbre == Arb, ]
}
Creation.PLL("SAB", "Vivant", Petite13.b)
答案 1 :(得分:0)
如果您不想引用参数,也可以将substitute
与deparse
一起使用。
foo <- function(x, data){
x <- deparse(substitute(x))
data[with(data, Species == x),]
}
head(foo(setosa, iris))
# Sepal.Length Sepal.Width Petal.Length Petal.Width Species
# 1 5.1 3.5 1.4 0.2 setosa
# 2 4.9 3.0 1.4 0.2 setosa
# 3 4.7 3.2 1.3 0.2 setosa
# 4 4.6 3.1 1.5 0.2 setosa
# 5 5.0 3.6 1.4 0.2 setosa
# 6 5.4 3.9 1.7 0.4 setosa