【问题标题】:Why does this loop return NULL为什么这个循环返回NULL
【发布时间】:2016-08-31 09:28:28
【问题描述】:

我想替换 URL 中的特定字符串 所以我会为每个“工作”获得一个数据框的链接列。看起来 我的循环有问题。我该如何解决 这个问题?

        dat <- read.table(text = "  Index          job          age            
                                         44        DBA            0      
                                         55        SAS            0      
                                         66        CLOUD          0      
                                         77        AJAX           0      
                                         88        C              1      
                                         99        FULLSTACK      1  ", header = TRUE)

    dat1<-as.list(dat[[2]])
    url  = "'as/DD/p=DD"
    test <-gsub('DD',dat1[[1]],url,ignore.case = T)   # checking the gsub result manually
    test
    #[1] "'as/DBA/p=DBA"    #this is correct

#Now inside a loop    
    s<- for (i in 1:length(dat1)){
            test <-gsub('DD',dat1[[1]],url,ignore.case = T)
         }
    s
    > s
    NULL  

为什么我得到“Null”而不是以下期望的结果:

    as/DBA/p=DBA
    as/SAS/p=SAS            
    as/CLOUD/p=CLOUD
    as/AJAX/p=AJAX
    as/C/p=C
    as/FULLSTACK/p=FULLSTACK  

【问题讨论】:

  • for 在 R 中返回什么你可以尝试s&lt;-lapply(1:length(dat1),function(i){gsub('DD',dat1[[i]],url,ignore.case = T)})
  • lapply(dat1, function(i) gsub('DD',i,url,ignore.case = T))。改为sapply获取向量而不是列表
  • 我尝试了两个行代码,但我得到了奇怪的结果(这里是第一行示例):"'as/'as/'as/'as/DBA/p=DBA/p='as/DBA /p=DBA/p='as/'as/DBA/p=DBA/p='as/DBA/p=DBA/p='as/'as/'as/DBA/p=DBA/p=' as/DBA/p=DBA/p='as/'as/DBA/p=DBA/p='as/DBA/p=DBA"

标签: r loops gsub


【解决方案1】:

您没有将结果保存在任何地方。如果您更改循环以选择适当的列表元素并将结果保存到列表中,它应该会给您想要的。

for (i in 1:length(dat1)){
  test <-gsub('DD',dat1[[i]],url,ignore.case = T)
  dat1[[i]] <- test
}

【讨论】:

  • @mql4beginner 它对我有用。输入dat1,您将看到所有输出链接
  • 谢谢@USER_1,请考虑将这行代码添加到您的答案中:data.frame(matrix(unlist(dat1), byrow=T),stringsAsFactors=FALSE)
  • 我不知道为什么有必要?实际上,您可以直接在 dat 上执行循环,而不是将 dat 转换为列表,方法是在循环内使用此子集 - dat[i,2]
  • 我建议的代码行将创建所需的数据框。
猜你喜欢
  • 2018-12-10
  • 1970-01-01
  • 2014-04-01
  • 2023-03-28
  • 2012-02-27
  • 1970-01-01
  • 1970-01-01
  • 2013-08-09
  • 1970-01-01
相关资源
最近更新 更多