【发布时间】:2021-07-30 11:46:22
【问题描述】:
我必须创建一个 for 循环来生成一个向量,该向量生成过去 24 小时内市值变化超过 10%(绝对值)的所有加密货币的符号。我已经制作了一个可以工作的while循环,但是我似乎无法弄清楚如何使for循环工作。有没有人知道为什么 for 循环不起作用?
我在下一个练习中遇到了同样的问题。我有一个有效的 while 循环,但我的 for 循环不起作用。为此,我们必须提供 3 种给定加密货币的市场数据。
以下是有关问题的所有代码。
第一个问题的代码:
for循环:
volatile <- vector()
i <- 1
for (i in nrow(mdata)) {
if (abs(mdata[i, "market_cap_change_percentage_24h"]) >= 10) {
volatile <- c(volatile, mdata[i, "symbol"])
}
}
while 循环:
volatile <- vector()
i <- 1
while(i <= nrow(mdata)) {
if(abs(mdata[i, "market_cap_change_percentage_24h"]) >= 10) {
volatile <- c(volatile, mdata[i, "symbol"])
}
i <- i + 1
}
第二题代码:
for循环:
coins <- c("polkadot","bitcoin","ethereum")
overview <- data.frame(id = character(0), average_daily_price = numeric(0), sd = numeric(0))
i <- 1
for (i in length(coins)) {
mchart <- get_chart(coins[i])
average_daily_price <- mean(mchart[, 2])
sd <- sd(mchart[,2])
overview <- rbind(overview, c(coins[i], average_daily_price, sd))
i <- i + 1
}
colnames(overview) <- c("id", "average daily price", "sd")
(我已经尝试了带有和不带有“i
while 循环:
coins <- c("polkadot","bitcoin","ethereum")
overview <- data.frame(id = character(0), average_daily_price = numeric(0), sd = numeric(0))
i <- 1
while(i <= length(coins)) {
mchart <- get_chart(coins[i])
average_daily_price <- mean(mchart[, 2])
sd <- sd(mchart[, 2])
overview <- rbind(overview, c(coins[i], average_daily_price, sd))
i <- i + 1
}
colnames(overview) <- c("id", "average daily price", "sd")
(get_chart是我们r-project中已经提供的功能。如果有人想复现代码,请在r-project顶部使用下面的代码,如果没有,这部分可以跳过。)
options(scipen=999)
library(httr)
library(jsonlite)
get_market <- function(page) {
Sys.sleep(2)
url <- sprintf("https://api.coingecko.com/api/v3/coins/markets?vs_currency=EUR&page=%s",page)
data <- as.data.frame(fromJSON(content(GET(url), as="text"), flatten = TRUE))
return(data)
}
get_chart <- function(coin_id) {
Sys.sleep(2)
url <- sprintf("https://api.coingecko.com/api/v3/coins/%s/market_chart?vs_currency=EUR&days=30&interval=daily",coin_id)
data <- as.data.frame(fromJSON(content(GET(url), as="text"), flatten = TRUE))
return(data)
}
mdata <- data.frame()
for (i in 1:5) {
mdata <- rbind(mdata,get_market(i))
}
【问题讨论】:
标签: r for-loop while-loop