r - 返回带有公式 (~) 波浪号和符号的命名列表的函数
问题描述
我正在尝试创建一个可以返回plotly
平行坐标图尺寸的函数。简而言之,这个函数期望结构中的维度如下:
df %>%
plot_ly(type = 'parcoords',
line = list(color = "blue"),
dimensions = list(
list(values = ~ column_01),
list(values = ~ column_02),
list(values = ~ column_03)
# etc...
)
)
例如,给定一个data.frame
(例如iris
),我想返回一个看起来像这样的列表结构:
# Desired results
list(
list(values = ~ Sepal.Length),
list(values = ~ Sepal.Width),
list(values = ~ Petal.Length),
list(values = ~ Petal.Width),
list(values = ~ Species)
)
formula
我很接近,但我在(~) 部分遇到了问题:
library(tidyverse)
get_dimensions <- function(df) {
map(names(df), ~ list(values = rlang::sym(.)))
}
get_dimensions(iris) %>% str
# List of 5
# $ :List of 1
# ..$ values: symbol Sepal.Length
# $ :List of 1
# ..$ values: symbol Sepal.Width
# $ :List of 1
# ..$ values: symbol Petal.Length
# $ :List of 1
# ..$ values: symbol Petal.Width
# $ :List of 1
# ..$ values: symbol Species
或者,如果有人知道一种自动将data.frame 的所有列作为维度传递给 plotly parcoords 图的方法,请告知!
解决方案
I used call()
to create the formula.
library(magritrr)
get_dimensions <- . %>%
names() %>%
lapply(as.name) %>%
lapply(function (x) list(values = call("~", x)))
get_dimensions(iris)
# [[1]]
# [[1]]$values
# ~Sepal.Length
#
#
# [[2]]
# [[2]]$values
# ~Sepal.Width
#
#
# [[3]]
# [[3]]$values
# ~Petal.Length
#
#
# [[4]]
# [[4]]$values
# ~Petal.Width
#
#
# [[5]]
# [[5]]$values
# ~Species
推荐阅读
- python - 在 MySQL 查询中使用 python 函数
- r - 如何快速轻松地为新的 R 版本更新所有包?
- python-3.x - Docker selenium:无头模式下的 Chrome 超时
- android - GeoFire removeAllListeners() 方法根本不删除监听器
- html - body 元素的初始高度
- javascript - 如何将 QuerySet 从 python 传递给 js?
- algorithm - 哪种排序和唯一顺序更快?
- c++ - 虚函数和虚析构函数有什么区别?
- apache-kafka - org.apache.kafka.common.errors.InvalidGroupIdException
- rust - 如何使用非词汇生命周期正式推理程序