【发布时间】:2015-03-24 21:05:54
【问题描述】:
我正在编写一个带有两个参数(状态、结果)的简单函数。状态用于稍后对数据帧进行子集化。
话虽如此,部分要求是状态是长度为 2 的字符向量。我需要编写更多的代码来确保传递的状态符合这个要求。
所以我写了以下内容:
best <- function(state, outcome) {
outcome <- read.csv("outcome-of-care-measures.csv", colClasses = "character")
state <- vector(mode = "character", length = 2)
st.checkTbl <- outcome[8]
state
}
但是,当我调用函数并传递参数时:
best("AXA") or best("FOO") or even best("TX") or best(AL)
我得到的只是:“”“”
如果我注释掉#state
如何确保传递给函数的参数在函数中存储为变量(状态)?或者,我是不是想多了?真的,我只是想测试一下我传递给 state 参数的内容是否可以打印出来用于测试目的。
。对不起 101 课。
【问题讨论】:
-
听起来你想多了。此外,这个函数应该做什么也不是很清楚,因为它将返回一个空字符向量,或者,如果您注释掉该行,则返回您为
state提供的原始值。您可能想给出An Introduction to R manual 的“编写自己的函数”部分。 -
无论你输入什么状态,你都会在函数内用
state <- vector(...)覆盖它 -
托马斯,我认为你是对的。我想多了,R 只是知道如何处理我的状态论点。我试图弄清楚它如何知道将 state 的值发送到哪里,并向自己证明它实际上正在做我想要它做的事情。
-
@RichardScriven 在考虑了一分钟后我发现了这一点,这就是为什么我得到一个空字符向量的原因。谢谢!
-
你可以看看你的论点,例如
f <- function(x) as.list(match.call()[-1]); f("hello")可以看到x输入为“hello”
标签: r function scope default-arguments