创建具有引用不同数据集灵活性的R函数
我试图在R中创建一个简单的函数,它可以引用多个数据集和多个变量名。使用以下代码,我得到一个错误,我认为这是由于引用:创建具有引用不同数据集灵活性的R函数,r,function,naming,R,Function,Naming,我试图在R中创建一个简单的函数,它可以引用多个数据集和多个变量名。使用以下代码,我得到一个错误,我认为这是由于引用: set.seed(123) dat1 <- data.frame(x = sample(10), y = sample(10), z = sample(10)) dat2 <- data.frame(x = sample(10), y = sample(10), z = sample(10)) table(dat1$x, dat1$y) table(dat2$x,
set.seed(123)
dat1 <- data.frame(x = sample(10), y = sample(10), z = sample(10))
dat2 <- data.frame(x = sample(10), y = sample(10), z = sample(10))
table(dat1$x, dat1$y)
table(dat2$x, dat2$y)
fun <- function(dat, sig, range){print(table(dat$sig, dat$range))}
fun(dat = dat1, sig = x, range = y)
fun(dat = dat2, sig = x, range = y)
set.seed(123)
dat1数据帧上的[[]]
运算符类似于$
,但允许您引入对象并查找其值。然后在函数外部将“x
”值指定给sig
。如果不在那里加引号,R将查找x
对象
fun <- function(dat, sig, range){print(table(dat[[sig]], dat[[range]]))}
fun(dat = dat1, sig = "x", range = "y")
fun(dat = dat2, sig = "x", range = "y")
fun数据帧上的[[]]
运算符类似于$
,但允许您引入对象并查找其值。然后在函数外部将“x
”值指定给sig
。如果不在那里加引号,R将查找x
对象
fun <- function(dat, sig, range){print(table(dat[[sig]], dat[[range]]))}
fun(dat = dat1, sig = "x", range = "y")
fun(dat = dat2, sig = "x", range = "y")
fun数据帧上的[[]]
运算符类似于$
,但允许您引入对象并查找其值。然后在函数外部将“x
”值指定给sig
。如果不在那里加引号,R将查找x
对象
fun <- function(dat, sig, range){print(table(dat[[sig]], dat[[range]]))}
fun(dat = dat1, sig = "x", range = "y")
fun(dat = dat2, sig = "x", range = "y")
fun数据帧上的[[]]
运算符类似于$
,但允许您引入对象并查找其值。然后在函数外部将“x
”值指定给sig
。如果不在那里加引号,R将查找x
对象
fun <- function(dat, sig, range){print(table(dat[[sig]], dat[[range]]))}
fun(dat = dat1, sig = "x", range = "y")
fun(dat = dat2, sig = "x", range = "y")
数据帧上的fun[[]]运算符类似于$,但允许您引入对象并查找其值。然后在函数外部,将“x”值指定给sig。如果你不把cuotes放在那里,R将查找x object,你的评论可能会进入答案本身。评论不一定会留下/不会被删除,因此任何对谈话重要的内容都应该在问答中。由于R的范围界定决策不太好,@AndriyTkach的评论很好。只是为了说明这一点<代码>r=1:10;f=函数(x,r){x[r]}
和f(10:1)与f(10:1,10:1)
我无法理解@Vlo的担忧。在第一个实例中,r
位于函数外部,在第二个实例中,r的参数不同,结果也不同。困难在哪里?我承认我很困惑,首先做rm(r)
,然后重复f(10:1)
,并不是抛出错误。@Bonded我必须考虑的是r
是函数的一个参数,所以当它在那里查找r
并且找不到它时,至少应该发出警告。我也不明白为什么f
在没有第二个参数的情况下工作;我怀疑这是边缘案件。看起来整个问题与此问答非常相切,在任何情况下,数据帧上的。[[]]运算符类似于$,但允许您引入一个对象并查找其值。然后在函数外部,将“x”值指定给sig。如果你不把cuotes放在那里,R将查找x object,你的评论可能会进入答案本身。评论不一定会留下/不会被删除,因此任何对谈话重要的内容都应该在问答中。由于R的范围界定决策不太好,@AndriyTkach的评论很好。只是为了说明这一点<代码>r=1:10;f=函数(x,r){x[r]}
和f(10:1)与f(10:1,10:1)
我无法理解@Vlo的担忧。在第一个实例中,r
位于函数外部,在第二个实例中,r的参数不同,结果也不同。困难在哪里?我承认我很困惑,首先做rm(r)
,然后重复f(10:1)
,并不是抛出错误。@Bonded我必须考虑的是r
是函数的一个参数,所以当它在那里查找r
并且找不到它时,至少应该发出警告。我也不明白为什么f
在没有第二个参数的情况下工作;我怀疑这是边缘案件。看起来整个问题与此问答非常相切,在任何情况下,数据帧上的。[[]]运算符类似于$,但允许您引入一个对象并查找其值。然后在函数外部,将“x”值指定给sig。如果你不把cuotes放在那里,R将查找x object,你的评论可能会进入答案本身。评论不一定会留下/不会被删除,因此任何对谈话重要的内容都应该在问答中。由于R的范围界定决策不太好,@AndriyTkach的评论很好。只是为了说明这一点<代码>r=1:10;f=函数(x,r){x[r]}
和f(10:1)与f(10:1,10:1)
我无法理解@Vlo的担忧。在第一个实例中,r
位于函数外部,在第二个实例中,r的参数不同,结果也不同。困难在哪里?我承认我很困惑,首先做rm(r)
,然后重复f(10:1)
,并不是抛出错误。@Bonded我必须考虑的是r
是函数的一个参数,所以当它在那里查找r
并且找不到它时,至少应该发出警告。我也不明白为什么f
在没有第二个参数的情况下工作;我怀疑这是边缘案件。看起来整个问题与此问答非常相切,在任何情况下,数据帧上的。[[]]运算符类似于$,但允许您引入一个对象并查找其值。然后在函数外部,将“x”值指定给sig。如果你不把cuotes放在那里,R将查找x object,你的评论可能会进入答案本身。评论不一定会留下/不会被删除,因此任何对谈话重要的内容都应该在问答中。由于R的范围界定决策不太好,@AndriyTkach的评论很好。只是为了说明这一点<代码>r=1:10;f=函数(x,r){x[r]}
和f(10:1)与f(10:1,10:1)
I无法理解