r-理解并将数据帧的重载重建为d3格式



对于数据帧过载的函数,从R到nvd3折线图,我真的很失望。我的意图是使用nvd3折线图在R Shiny应用程序中显示数据帧,如下所示:

https://shiny.rstudio.com/gallery/nvd3-line-chart-output.html

主要问题是,X轴只是一个递增的数字,由过载数据帧的行数给定(如上面的示例所示(。我需要将数据帧的第一列作为我的x轴。因此,我想更改代码,实际目标是用r2d3函数替换它

在这个例子中,我不理解以下内容:如何将数据帧重载到指导函数,然后再重载到关系图?有人能告诉我一种方法来查看转换函数的输出,并将其替换为手动创建的d3字符串进行测试吗?

函数的调用:

output$mychart <- renderLineChart({
df_stocking_catches
})

这个功能我不懂。

# To be called from server.R
renderLineChart <- function(expr, env=parent.frame(), quoted=FALSE) {
# This piece of boilerplate converts the expression `expr` into a
# function called `func`. It's needed for the RStudio IDE's built-in
# debugger to work properly on the expression.
installExprFunction(expr, "func", env, quoted)
function() {
dataframe <- func()
mapply(function(col, name) {
values <- mapply(function(val, i) {
list(x = i, y = val)
}, col, 1:nrow(dataframe), SIMPLIFY=FALSE, USE.NAMES=FALSE)
list(key = name, values = values)
}, dataframe, names(dataframe), SIMPLIFY=FALSE, USE.NAMES=FALSE)
}
}

谢谢你的建议。Sam

我通过将索引x = i更改为x = dataframe[i,1]此更改将第一列作为图表的x值

但是,第一列在折线图中仍然显示为直线,这没有意义。。。也许任何人都知道如何更改代码以跳过作为行值的第一列。

有意大利菜吗?

renderLineChart <- function(expr, env=parent.frame(), quoted=FALSE) {
# ...
installExprFunction(expr, "func", env, quoted)
function() {
dataframe <- func()
mapply(function(col, name) {
print(name)
values <- mapply(function(val, i) {
list(x = dataframe[i,1], y = val)
}, col, 1:nrow(dataframe), SIMPLIFY=FALSE, USE.NAMES=FALSE)
...

加油,加油!它不漂亮,但它完全符合我的要求。使用调试函数browser((和print((命令逐步分析该函数。我现在觉得自己是个天才,已经自己解决了,但仍然没有清楚地理解这段糟糕的代码。

renderLineChart <- function(expr, env=parent.frame(), quoted=FALSE) {
installExprFunction(expr, "func", env, quoted)
function() {
dataframe <- func()
mapply(function(col, name) {
if(name!="Year"){
values <- mapply(function(val, i) {
list(x = dataframe[i,1], y = val)
#browser()
#print(dataframe[i,1])
}, col, 1:nrow(dataframe), SIMPLIFY=FALSE, USE.NAMES=FALSE)
list(key = name, values = values)
}
}, dataframe[,-1], names(dataframe[,-1]), SIMPLIFY=FALSE, USE.NAMES=FALSE)
}
}

希望有人能从这篇文章中得到启发。再见

最新更新