在R中写一个循环

时间:2016-06-16 11:00:45

标签: r loops for-loop s

我在R中编写了一个循环。代码应该通过列表中定义的变量列表,然后为每个变量执行一个函数。

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

以下是列表的示例:

121715771201463_626656620831011
121715771201463_1149346125105084

基于此值 - 我正在运行代码,我希望将此输出插入到MongoDB中。现在只插入第一个值及其相应的输出

  

test_list< -   C(" 121715771201463_626656620831011"" 121715771201463_1149346125105084"" 121715771201463_1149346125105999&#34)

     

for(i in test_list)   { // myfunction //     mongo.insert(mongo,DBNS,i)   }

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

感谢任何帮助。

2 个答案:

答案 0 :(得分:1)

尝试此示例,打印最终字符

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"

答案 1 :(得分:0)

目前尚不清楚“变量”是否与“值”相同。

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

如果“variable”是工作空间中的对象,而列表中的元素是您要处理的对象的名称,则需要确保使用get。像这样:

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

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

希望这会有所帮助。