【问题标题】:How to paste row names in a for loop with R如何使用R在for循环中粘贴行名
【发布时间】:2015-08-17 14:24:26
【问题描述】:

我正在尝试将行名称粘贴到 R 中的 for 循环中。这样我可以将 id 保留在每个循环的输出中,以便于分割。

我的 for 循环运行良好。只是我的粘贴功能没有。

UK_profileList 是数据框。下面的函数get_ga来自RGA包。

我的代码是:

start.date <- "2015-01-01"
end.date <- format(Sys.Date(), format = "%Y-%m-%d")

for (i in 1:nrow(UK_profileList)) {

  allData <- get_ga(UK_profileList[i,], start.date, end.date, dimensions = "ga:month, ga:day, ga:minute", metrics = "ga:sessions")

  row.names(allData[i]) <- paste(UK_profileList[i,], sep="")

}

我得到错误:

错误

row.names(tmp`, value = "8131437") : 'row.names 长度无效

请注意,我在这里知道这个帖子:using paste() in a for loop with glm

但它是 glm 特有的...

【问题讨论】:

  • 将粘贴功能更改为paste(UK_profileList[i,], collapse = "") 有效吗?
  • 也许row.names(allData[i]) &lt;- paste(as.character(UK_profileList[i,]), sep="")
  • 尝试将 row.names(allData[i]) 更改为 row.names(allData[i,])
  • 您是否遇到任何错误?你能用head(dput()) 显示你的数据的一小部分吗?您的数据在括号内,因此我们可以查看
  • @GKyle 感谢您的回答。你能在帖子中更新你的数据结构吗?这样你就不会受限于 cmets 的大小限制。 head(dput())UK_profileList 在类型和类方面可能会提供更多信息。

标签: r


【解决方案1】:

这就是我在评论中所说的:

allData<-data.frame(a=rnorm(10),b=rexp(10))
new.names<-NULL
for(i in 1:10){
 new.names[i]<-paste(letters[i],i,sep="")
}

row.names(allData)<-new.names

【讨论】:

  • 谢谢@Andrelrms。我认为这越来越接近了。我使用id.names &lt;- NULL for (i in 1:nrow(UK_profileList)) { allData &lt;- get_ga(UK_profileList[i,], start.date, end.date, dimensions = "ga:month, ga:day, ga:minute", metrics = "ga:sessions") id.names[i] &lt;- paste(UK_profileList[i,],i, sep = "") } 但我得到了同样的错误。这里发生的是,构建了一个包含每个使用的唯一 id 的字符向量。我们需要的是包含与 allData 中每一行相关的 id 的东西。因此,将是相同的长度,并将无缝粘贴。谢谢!
猜你喜欢
  • 2020-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-11
  • 2019-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多