【问题标题】:Loop over a list in R循环遍历 R 中的列表
【发布时间】:2020-09-16 15:25:11
【问题描述】:

如果列表的每个数据框,我想做一个操作。我想对每个数据框中的一列执行 Kolmogorov–Smirnov (KS) 检验。我正在使用下面的代码,但它不起作用:

PDF_mean <- matrix(nrow = length(siteNumber), ncol = 4)
PDF_mean <- data.frame(PDF_mean)
names(PDF_mean) <- c("station","normal","gamma","gev")


listDF <- mget(ls(pattern="DSF_moments_"))
length(listDF)
i <- 1

for (i in length(listDF)) {

PDF_mean$station[i] <- siteNumber[i]
PDF_mean$normal[i] <- ks.test(list[i]$mean,"pnorm")$p.value
PDF_mean$gev[i] <- ks.test(list[i]$mean,"pgev")$p.value
PDF_mean$gamma[i] <- ks.test(list[i]$mean,"gamma")$p.value

}

有什么帮助吗?

【问题讨论】:

  • 添加PDF_mean 的样本以重现您的问题!
  • 另外,请描述它是如何不起作用的。

标签: r list dataframe loops


【解决方案1】:

它不是length(listDF),而是seq_along(listDF)1:length(listDF)(不过,它更适合seq_along),因为length 是一个单一的值,它没有做任何循环

for(i in seq_along(listDF)) {

  PDF_mean$station[i] <- listDF[[i]]$siteNumber
  PDF_mean$normal[i] <- ks.test(listDF[[i]]$mean,"pnorm")$p.value
  PDF_mean$gev[i] <- ks.test(listDF[[i]]$mean,"pgev")$p.value
  PDF_mean$gamma[i] <- ks.test(listDF[[i]]$mean,"gamma")$p.value
 }      

【讨论】:

  • 使用 seq_along...我收到以下错误:列表 [i] 中的错误:'builtin' 类型的对象不是子集
  • @Sss 我猜siteNumberlistDF 中的元素之一?
  • @Sss 你能试试更新的代码吗?您的代码有一些拼写错误 list 而不是 listDF
猜你喜欢
  • 1970-01-01
  • 2010-12-09
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
  • 2018-10-01
  • 2012-01-19
  • 1970-01-01
相关资源
最近更新 更多