【问题标题】:Cannot use for loop in R for gsub不能在 R 中为 gsub 使用 for 循环
【发布时间】:2018-07-24 07:10:01
【问题描述】:

我想将 Country_input 向量中的元素传递到我的 for 循环中,但是 gsub 一直打印 NaN 作为输出。

Revenue <- read.csv("Revenue.csv")

Traffic <- read.csv("Traffic.csv")

Country_input <- c("CH", "CZ", "DE", "FR", "NL", "PL", "UK")


RPS_country <- sum(Revenue[Revenue$Country == "x" & Revenue$Week =="2016-11", "Revenue"]) / sum(Traffic[Traffic$Country == "x" & Traffic$Week =="2016-11", "Sessions"])


output <- NULL
for (i in 1:length(Country_input)){
  output[i] <-gsub("x", Country_input[i], RPS_country)
}

不幸的是,每当我运行它时,gsub 总是返回一个 NaN 作为输出。

> output
[1] NA    NA    NA    NA    NA    NA    "NaN"

【问题讨论】:

  • for (i in 1:length(Country_input))length(Country_input) 是单个值。
  • 另一件事是RPS_country 是一个数值。求和得到的只是一个数值。因此它不包含x。但这不是它给你NA的原因
  • 嗨 LAP 我已经修改为 for i in 1:length 但是,它仍然会产生输出:[1] "NaN" "NaN" "NaN" "NaN" "NaN" "NaN" “南”
  • @Onyambu 谢谢 Onyambu,我该如何解决这个问题?知道如何更改 RPS_country 并使其与众不同吗?
  • 您需要向我们提供您的数据示例。如果可以,请发布dput 的输出(对于您的所有数据或第一行)。

标签: r for-loop gsub


【解决方案1】:

谢谢各位!我认为 Onyambu 帮助我找到了答案。由于 RPS_Country 输出单个数值。我无法将我的 for 循环传递给单个值。

因此我决定单独创建向量并在循环之后将它们相加:

x <- NULL
y <- NULL
for (i in 1:length(Country_input)){
  x[i] <- sum(Revenue[Revenue$Country == Country_input[i] & Revenue$Week =="2016-11","Revenue"])
  y[i] <- sum(Traffic[Traffic$Country == Country_input[i] & Traffic$Week =="2016-11","Sessions"])
  }
RPS_Country <- round(x/y, 3)
RPS_Country

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-19
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    相关资源
    最近更新 更多