我有一个功能,例如lapply(X, FUN, ...)
,它带有许多参数,其中一些参数具有默认值。我想使用X
调用此函数,但明确指定我希望X
提供哪个参数。在上面的示例中,可以为a
中的b
或c
或xyz
或...
提供lapply(1:5, fun, a = 4)
向量。
通常我可以调用1:5
,我想它会使用b
作为b
参数。
1:5
的默认参数并将c
用于1:5
该怎么办?xyz
中使用...
作为<subsystem xmlns="urn:jboss:domain:datasources:1.0">
<datasources>
<datasource jta="false" jndi-name="java:jboss/postgresDS" pool-name="postgresDS" enabled="true" use-ccm="false">
<connection-url>jdbc:postgresql://localhost:5432/testdb</connection-url>
<driver-class>org.postgresql.Driver</driver-class>
<driver>postgresql-9.4.1208.jre7.jar</driver>
<security>
<user-name>postgres</user-name>
<password>test</password>
</security>
<validation>
<validate-on-match>false</validate-on-match>
<background-validation>false</background-validation>
<background-validation-millis>0</background-validation-millis>
</validation>
<statement>
<prepared-statement-cache-size>0</prepared-statement-cache-size>
<share-prepared-statements>false</share-prepared-statements>
</statement>
</datasource>
<drivers>
<driver name="postgresql-9.4.1208.jre7.jar" module="org.postgresql">
<xa-datasource-class>org.postgresql.xa.PGXADataSource</xa-datasource-class>
</driver>
</drivers>
</datasources>
</subsystem>
参数怎么办?答案 0 :(得分:4)
通常情况下,我可以调用
<form> First Name: <input type="text" name="firstname"> <br> <br>Last Name: <input type="text" name="lastname"> <br> <br>Country: <select> <option value="Singapore">Singapore</option> </select> </form>
,我想它会使用1:5作为b参数。
是的,你的想象力是正确的。 lapply(1:5, fun, a = 4)
使用位置匹配将其lapply
参数传递给函数。正常rules of argument matching适用,这意味着命名参数的精确匹配优先。
另一种选择当然是将X
包装在匿名函数中:
fun
答案 1 :(得分:2)
处理用例的一种方法是简单地在lapply
向您公开的自定义函数中调用您自己的函数:
lst <- list(v1=c(1:3), v2="Hello", v3=5)
result <- lapply(lst, function(x) {
y <- FUN(x, a, b, c, ...) # Here FUN() is your own function
return(y)
})