我希望您能够使用 highcharter 库 编写循环以绘制各种图表,但我遇到了一些问题。我的代码如下所示:
在此处上传文件并将所有 NA 值转换为 "na" 字符串。
DT <- fread(file, sep='auto',na.strings=c("Na","-",""), blank.lines.skip=TRUE, stringsAsFactors = FALSE)
DTT <- DT
```
```{r, echo=F, results='asis'}
for(i in seq_along(DTT)) {
DTT[[i]] <- sapply(DTT[[i]], function(x) if(is.na(x)) x <- "na" else x <- x)
DTT[[i]] <- as.factor(DTT[[i]])
}
我尝试循环执行:
for(i in seq_along(DTT)) {
hc <- highchart() %>%
hc_title(text = 'prueba',
style = list(fontSize = "15px")) %>%
hc_chart(type = 'pie') %>%
hc_xAxis(categories = DTT[[i]]) %>%
hc_add_series(DTT[[i]], name = "Market", showInLegend = FALSE)
hc
}
我试着编写了一个函数并通过循环来调用它,但都没有成功。
最后,我尝试使用 lapply 函数
对数据框的所有列应用 plot 函数,但也没有成功。可能是我没有正确使用 lapply 这个过程。
gethc <- function(DT) {
hc <- highchart() %>%
hc_title(text = 'prueba',
style = list(fontSize = "15px")) %>%
hc_chart(type = 'pie') %>%
hc_xAxis(categories = DT) %>%
hc_add_series(DT, name = "Market", showInLegend = FALSE)
hc
}
lapply(DTT, gethc)
我找到了一个相关的内容:使用highcharter在循环中绘图
在循环中需要使用print,因为自动打印被关闭了,但是它没有打印任何东西。
示例:
DT <- mtcars
for(i in seq_along(DT)) {
DT[[i]] <- sapply(DT[[i]], function(x) if(is.na(x)) x <- "na" else x <- x)
}
gethc <- function(i) {
hc <- highchart() %>%
hc_title(text = 'prueba',
style = list(fontSize = "15px")) %>%
hc_chart(type = 'pie') %>%
hc_xAxis(categories = DT[[i]]) %>%
hc_add_series(DT[[i]], name = "Market", showInLegend = FALSE)
print(hc)
}
for(i in seq_along(DT)) {
gethc(i)
}
这个程序在.R文件中可以正常运行,但在R Markdown文件中却无法正常工作。
如果有人能提供解决此问题的方案,将会非常有帮助。
print(hc)
而不是hc
是不起作用的吗?你能给我们一个可行的重现例子吗?你是想创建许多图表吗?因为每次都在覆盖hc
。它在您(可能)的 RMarkdown 文档之外是否有效(即在正常的干净会话中)? - Axeman