【问题标题】:Use of Assign/Paste in R to dynamically name in R在 R 中使用分配/粘贴在 R 中动态命名
【发布时间】:2014-11-17 17:56:45
【问题描述】:

当我使用非动态名称时,事情会按预期工作:

summary(date1fit <- lm(masterdf.date[[1]]$LeastDiluteMPN~masterdf.date[[1]]$temp))

当我尝试根据 [[i]] 命名拟合时,我收到错误消息,指出“找不到函数 'paste

summary(date.names[[i]] <- lm(masterdf.date[[1]]$LeastDiluteMPN~masterdf.date[[1]]$temp))
summary(paste(date.names[[i]]) <- lm(masterdf.date[[1]]$LeastDiluteMPN~masterdf.date[[1]]$temp))
summary(assign(date.names[[i]]) <- lm(masterdf.date[[1]]$LeastDiluteMPN~masterdf.date[[1]]$temp))
summary(assign(paste(date.names[[i]]), "", sep="")) <- lm(masterdf.date[[1]]$LeastDiluteMPN~masterdf.date[[1]]$temp))

谁能帮我弄清楚我哪里出错了?我错过了什么?我需要嵌套循环吗?我正在使用的完整代码如下。

谢谢!

masterdf <- masterdf[order(as.Date(masterdf$date, format="%d/%m/%Y")),]

dates <- unique(masterdf$date)

masterdf.date <- list()
for(i in 1:length(dates))   {
masterdf.date[[i]] <- masterdf[masterdf$date==dates[i],]
                    }
date.names <- paste("date", dates, sep="")

summary(DYNAMIC NAME <- lm(masterdf.date[[1]]$LeastDiluteMPN~masterdf.date[[1]]$temp))

【问题讨论】:

  • 您的错误是您首先尝试使用assign“动态命名”单独的对象。如果您希望事物“动态命名”,请使用列表,并修改列表的名称属性。只需忘记 assign 函数甚至存在(直到您知道足够知道何时真正需要使用它)。

标签: r dynamic nested-loops paste assign


【解决方案1】:

为什么要在摘要中进行分配?伊克。分两步完成:

> d=data.frame(x=1:10, y=runif(10))
> dmodel <- lm(y~x,data=d)
> summary(dmodel)

然后你可以有一个列表并做:

d=list()
for(i in 1:10){
  d[[i]] = lm(....whatever...)
  summary(d[[i]])
}

如果你疯狂到想做“动态名称”,那么:

 crazyname = paste("mad",i)
 assign(crazyname, lm(y~x,data=d))
 summary(get(crazyname))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-01
    • 2012-04-17
    • 1970-01-01
    • 2020-09-12
    • 2013-08-30
    • 2022-12-07
    相关资源
    最近更新 更多