使用包含数字列PY的数据集w,我可以:
nrow(subset(w, PY==50))
Run Code Online (Sandbox Code Playgroud)
并得到正确的答案.但是,如果我尝试创建一个函数:
fxn <- function(dataset, fac, lev){nrow(subset(dataset, fac==lev))}
Run Code Online (Sandbox Code Playgroud)
并运行
fxn(w, PY, 50)
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
eval(expr,envir,enclos)中的错误:找不到对象'PY'
我究竟做错了什么?谢谢.
来自以下文件subset:
警告 这是一个便于交互使用的便利功能.对于编程,最好使用像[的标准子集函数,特别是参数子集的非标准评估可能会产生意想不到的后果.
这个相当模糊的警告在这里得到了很好的解释:为什么`[`比`子集更好?
最后一个字是你不能使用subset比其他交互方式像你正在尝试,尤其不要通过包装.您应该使用[:
fxn <- function(dataset, fac, lev) nrow(dataset[dataset[fac] == lev, , drop = FALSE])
Run Code Online (Sandbox Code Playgroud)
或者更确切地说:
fxn <- function(dataset, fac, lev) sum(dataset[fac] == lev)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5346 次 |
| 最近记录: |