【问题标题】:Writing a loop in R在 R 中编写一个循环
【发布时间】:2016-10-17 20:33:59
【问题描述】:

我在 R 中编写了一个循环。代码预计会遍历列表中定义的变量列表,然后为每个变量执行一个函数。

问题 1 - 我无法遍历变量列表
问题 2 - 我需要将值中的每个输出插入到 Mongo DB 中

这是一个列表示例:

121715771201463_626656620831011
121715771201463_1149346125105084

基于这个值——我正在运行一个代码,我希望这个输出被插入到 MongoDB 中。现在只插入第一个值及其对应的输出

测试列表

for (i in test_list) { //我的函数// mongo.insert(mongo, DBNS, i) }

我只能从列表中选择第一个值的值,而不是全部

感谢任何帮助。

【问题讨论】:

  • 您可能应该使用small c创建列表时:test_list

标签: r loops for-loop s


【解决方案1】:

这里不清楚“变量”是否与“值”相同。

如果您所说的变量实际上是您构造的列表中的一个元素,那么我认为上面的 Ilyas 评论可能会解决问题。

如果“变量”是工作区中的对象,而列表中的元素是您要处理的对象的名称,那么您需要确保使用get。像这样:

for(i in ls()){
    cat(paste(mode(get(i)),"\n") )
}

ls() 返回对象名称列表。上面的循环遍历它们,在它们上使用get 来获取正确的对象。从那里,你可以做你想做的处理(在上面的例子中,我只是打印了对象的模式)。

希望这能有所帮助。

【讨论】:

    【解决方案2】:

    试试这个例子,它会打印最后的字符

    myfunction <- function(x){ print( substr(x, 27, nchar(x)) ) } 
    
    test_list <- c("121715771201463_626656620831011", 
                   "121715771201463_1149346125105084", 
                   "121715771201463_1149346125105999")
    for (i in test_list){ myfunction(i) }
    for (j in 1:length(test_list)){ myfunction(test_list[j]) } 
    

    最后两行应该分别产生

    [1] "31011"
    [1] "105084"
    [1] "105999"
    

    【讨论】:

    • 我能够重现您的逻辑,我从删除所有现有对象并释放空间开始,然后逻辑工作......
    猜你喜欢
    • 2015-11-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-25
    • 2021-11-15
    • 2011-08-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多