根据行索引提取列值

时间:2017-08-18 18:23:04

标签: r for-loop

请在这里帮助新手。我想从sites1数据框中提取TOTAL_SITE信息。数据框如下所示:

FACILITY TOTAL_SITE
A        100
B        80
C        20

if(nrow(sites1) > 0){
  outStr <- "<ul>"
  for(site in sites1$FACILITY){
    outStr <- paste0(outStr,"<li>",site,": ", sites1$TOTAL_SITE, "</li>")
  }
  outStr <- paste0(outStr, "</ul>")
} else {
  outStr <- ""
}

但是,结果显示重复打印行并表示我不应同时循环遍历sites1 $ FACILITY和sites1 $ TOTAL_SITE。如何使用与sites1数据框的两列对应的索引(行号)?

3 个答案:

答案 0 :(得分:0)

这将从df获取TOTAL_SITE数据(不确定这是不是你的意思?)

 TotalSiteData<-sites1["TOTAL_SITE"]

但是这应该保留相应的行号和你之后的数据。

答案 1 :(得分:0)

如果我理解正确,你需要从TOTAL_SITE列创建一个HTML无序列表,对吗?希望这能解决您的问题:

total_site <- sites1[,"TOTAL_SITE"]

outStr <- sapply(total_site, function(value){
    paste("<li>", value, "</li>", sep = "")
})

outStr <- paste("<ul>", outStr, "</ul>")

答案 2 :(得分:0)

我相信这就是你要求的:

if(nrow(sites1) > 0)
    outStr <- paste0("<ul>",
            paste0("<li>", sites1$FACILITY, ": ", sites1$TOTAL_SITE, "</li>",collapse=""),
            "</ul>"
        )
else
    outStr <- ""

此代码将获取data.frame的列并按行将它们粘贴在一起,在示例中为outStr分配以下字符向量:

<ul><li>A: 100</li><li>B: 80</li><li>C: 20</li></ul>

相关问题