【问题标题】:R Create objects in loop named depending on iR在根据i命名的循环中创建对象
【发布时间】:2017-08-02 07:33:57
【问题描述】:

我遇到了与for loop to output different objects in r 几乎相同的问题,但即使考虑这里的解决方案我也不明白(对不起): 我想根据日历年创建对象(可以是矩阵、向量或其他)。

我将实际年份创建为数字:

now<-Sys.time()
actualyear<-strftime(now, format="%Y")
actualyear<-as.numeric(actualyear)
class(actualyear)

在这种情况下,我想创建 7 个名为 test2011, test2012, test2013, .... test2017 的对象,内容为等效的日历年(test2011

for(i in 2011:actualyear) {test[[i]]<-i}

【问题讨论】:

  • 创建一个包含元素的列表(可以命名)。我的建议是避免使用assign 并避免让您的工作空间与对象混在一起。列表非常适合避免这种编码实践。
  • 您可以在代码后添加names(test)=paste("test",2011:actualyear)
  • 使用paste0 代替paste 会很棒。 paste 函数不折叠参数会创建名称,它们之间有空格。不建议在编程中使用这些名称。因此更好地使用:names(test)=paste0("test",2011:actualyear)

标签: r loops


【解决方案1】:

正如 cmets 中所指出的,您可以使用 assign 为名称分配值

for(i in 2011:actualyear) {
  assign(paste0("test", i), i)
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-25
    • 2018-01-26
    • 1970-01-01
    • 2016-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多