【问题标题】:using apply with assign in R在R中使用apply with assign
【发布时间】:2013-04-23 00:03:30
【问题描述】:

考虑以下示例:

Vars <- c("car","bike","lorry")
Dat <- c(10,20,22)

for (i in 1:length(Vars)){
  assign(Vars[i],Dat[i])
}

在这里,我想根据Vars 中的条目和Dat 中的值在工作空间中生成三个变量。目前我正在使用循环,但我一直试图通过使用应用来删除循环,这样做的最佳方法是什么?

【问题讨论】:

  • 如果循环对你有用,你为什么要删除它?
  • 这是一个更大的脚本的一部分,该脚本由 for 循环驱动,所以我试图删除第二个循环,认为这会是更好的编程实践。
  • 从下面的答案中我看到在这种情况下循环可能会更好,它似乎比使用 mapply 更具可读性,感谢您的 cmets。
  • Kate,通常有几种方法可以用 R 完成工作,并且每种方法都在正确的时间占据一席之地.... :)

标签: r loops apply


【解决方案1】:

这是一个很好的例子,说明何时使用 for 循环而不是 apply
最好的解决方案是保持原样。

如果您真的想使用*ply 循环,请使用mapply

 mapply(assign, Vars, Dat, MoreArgs=list(envir=parent.frame()))

【讨论】:

  • 只是出于好奇:为什么您更喜欢循环而不是 mapply?只是为了更好的可读性?
【解决方案2】:

您也可以使用attach,例如:

attach(as.list(setNames(Dat,Vars)))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-20
    • 1970-01-01
    • 1970-01-01
    • 2015-11-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多