【问题标题】:Print command used to create results in loop用于在循环中创建结果的打印命令
【发布时间】:2018-03-09 00:56:11
【问题描述】:

假设我有以下循环:

test <- mtcars
target_var <- c("mpg", "wt")
group_var <- c("gear", "carb")

library(tidyverse)

for (i in target_var) {
  for (j in group_var) {

print(prop.table(table(test[, i], test[, j]), 2))
  }
}

当我运行它时,我看到报告了四个 prop.table,每个都有一个从 [1] 到 [[4]] 的标题。通过查看代码并查看分配给 target_var 和 group_var 的变量的顺序,我可以直观地匹配哪个 prop.table 与哪些变量。

但是假设我正在循环十几个变量或更多。显然,将一个特定的 prop.table(例如,列为“[[14]]”)与该表中的实际变量进行匹配是一个问题。

有没有办法打印用于生成每个特定表的命令 R?

我不是在寻找progress bar,而是在控制台中打印的每个表格上方列出代码的东西。例如,下面的代码将打印在适当的 prop.table 的正上方:

prop.table(table(test$mpg, test$gear), 2)
# actual prop.table result from the first time through the loop here

prop.table(table(test$mpg, test$carb), 2)    
# actual prop.table result from the second time through the loop here

这将有助于我进行探索性数据分析。

【问题讨论】:

    标签: r loops printing


    【解决方案1】:

    如果我理解得很好,您希望函数的结果“随用随用”(即在循环的每次迭代中,而不是在结束时)?

    您可以使用cat 代替print(请务必在调用cat 后打印一个新行\n 以避免混乱的控制台):

    for(i in 1:3) {
        results <- mean(rnorm(10))
        cat(results)
        cat("\n")
    }
    

    【讨论】:

    • 我正在寻找不同的东西。结果很好,但我希望将相关命令放在每组结果之上。所以 R 会打印如下内容:prop.table(table(test$mpg, test$gear), 2); # actual prop.table result here; prop.table(table(test$mpg, test$carb), 2); # actual prop.table result here
    • 换句话说,控制台会列出它刚刚循环的命令,然后是相关结果,然后是它循环的下一个命令,然后是相关结果,等等。
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 2010-12-21
    • 1970-01-01
    • 2021-10-19
    • 1970-01-01
    • 1970-01-01
    • 2020-03-22
    相关资源
    最近更新 更多