在精神上类似于边缘组和在R中的visNetwork中选择,我想知道如何基于边缘而不是使用visNetwork包的节点创建下拉列表.我认为这是可能的visSetSelection功能,但这需要使用闪亮.我用降价渲染的html提供最终产品,而不是从服务器部署它,所以我不认为这是可能的.
有没有办法在闪亮之外复制这个功能?我不完全理解文档中的术语,但我认为我想要做的是类似于函数中nodeIdSelection的selectedBy参数visOptions,你可以创建一个"HTML选择元素",但是基于边缘列表而不是节点列表.
这个特定问题的数据集是专有的,但这里有一些虚拟数据.我希望能够通过边缘的"重量"进行选择.
library(tidyverse)
library(visNetwork)
nodes <- tibble(id = 1:30)
edges <- tibble(from = c(21:30, 1:20),
to = c(5:20, 21:30, 1:4),
weight = c(rep(1:5, 6)))
visNetwork(nodes, edges) %>%
visIgraphLayout(layout = "layout_in_circle") %>%
visOptions(highlightNearest = list(enabled = T,
hover = T,
degree = 1,
algorithm = "hierarchical"),
nodesIdSelection = T)
Run Code Online (Sandbox Code Playgroud)
我所期待的是一个edgesIdSelection争论,visOptions但这不是一个选择.我认为管道visSelectEdges可以工作,但只适用于闪亮,我的客户端无法访问闪亮的服务器.我知道这个库是为了让javascript库可以通过R访问所以我不希望完整的功能 - 如果我不能在R中使用这个包(没有闪亮),我完全明白了.
我正在使用 R 和 Python,我想将我的一个 Pandas DataFrames 写成一个羽毛,这样我就可以在 R 中更轻松地使用它。但是,当我尝试将它写成一个羽毛时,我收到以下错误:
ArrowInvalid: trying to convert NumPy type float64 but got float32
Run Code Online (Sandbox Code Playgroud)
我仔细检查了我的列类型,它们已经浮动 64:
In[1]
df.dtypes
Out[1]
id Object
cluster int64
vector_x float64
vector_y float64
Run Code Online (Sandbox Code Playgroud)
无论使用feather.write_dataframe(df, "path/df.feather")或 ,我都会遇到相同的错误df.to_feather("path/df.feather")。
我在 GitHub 上看到了这个,但不明白它是否相关:https : //issues.apache.org/jira/browse/ARROW-1345和https://github.com/apache/arrow/issues/1430
最后,我可以将它保存为 csv 并更改 R 中的列(或者只是在 Python 中进行整个分析),但我希望使用它。
编辑1:
尽管下面有很好的建议,但仍然有同样的问题,所以更新我的尝试。
df[['vector_x', 'vector_y', 'cluster']] = df[['vector_x', 'vector_y', 'cluster']].astype(float)
df[['doc_id', 'text']] = df[['doc_id', 'text']].astype(str)
df[['doc_vector', 'doc_vectors_2d']] = df[['doc_vector', 'doc_vectors_2d']].astype(list)
df.dtypes
Out[1]:
doc_id object
text object
doc_vector …Run Code Online (Sandbox Code Playgroud) 相对较新的 tidy 评估和我正在制作的函数,我想知道为什么使用不同的辅助函数。例如,enquo和之间有什么区别ensym?在我下面制作的用于捕获每日平均值和移动平均值的函数中,它们是可以互换的:
library(dplyr)
library(lubridate)
library(rlang)
library(zoo)
manipulate_for_ma <- function(data, group_var, da_col_name, summary_var, ma_col_name) {
group_var <- ensym(group_var)
summary_var <- enquo(summary_var)
da_col_name <- ensym(da_col_name)
ma_col_name <- enquo(ma_col_name)
data %>%
group_by(!!group_var) %>%
summarise(!!da_col_name := mean(!!summary_var, na.rm = TRUE)) %>%
mutate(!!ma_col_name := rollapply(!!da_col_name,
30,
mean,
na.rm = TRUE,
partial = TRUE,
fill = NA)) %>%
rename(date = !!group_var)
}
lakers %>%
mutate(date = ymd(date)) %>%
manipulate_for_ma(group_var = date,
da_col_name = points_per_play_da,
summary_var = points,
points_per_play_ma)
# A tibble: …Run Code Online (Sandbox Code Playgroud) 很少有线程处理类似的问题,但我确实没有设法让这个线程像我期望的那样工作。
我有这个数据集:
Item AssetClass variable value
89 F/EER Hybrids 2016-09-15 5.0014
103 F/SOLG MA 2016-09-15 1.5829
104 F/SOP MA 2016-09-15 -5.4365
105 F/SRV MA 2016-09-15 6.1000
49 F/EER Hybrids 2016-06-15 0.7179
63 F/SOLG MA 2016-06-15 0.0000
64 F/SOP MA 2016-06-15 4.7124
65 F/SRV MA 2016-06-15 13.5132
9 F/EER Hybrids 2016-03-15 0.9599
23 F/SOLG MA 2016-03-15 0.0000
24 F/SOP MA 2016-03-15 6.6873
25 F/SRV MA 2016-03-15 9.9191
Run Code Online (Sandbox Code Playgroud)
具有以下结构:
'data.frame': 12 obs. of 4 variables:
$ Item : Factor w/ 40 levels …Run Code Online (Sandbox Code Playgroud) 我正在编写一个函数来使用 highcharter 重现几个图表,这些图表都将具有类似的格式(和其他内容)。如果名称发生更改,或者如果我想做一些不同的事情并且我正在接受这些参数,我希望能够选择数据集的不同列{{ }}。但是后来我收到了这个奇怪的错误:
Error: Problem with `mutate()` input `x`.
x Input `x` must be a vector, not a `formula` object.
i Input `x` is `~Year`.
Run Code Online (Sandbox Code Playgroud)
这是我的(最小可重现)代码:
library(dplyr)
library(highcharter)
plot_high_chart <- function(.data,
chart_type = "column",
x_value = Year,
y_value = total,
group_value = service) {
.data %>%
hchart(chart_type, hcaes(x = {{x_value}}, y = {{y_value}}, group = {{group_value}}))
}
data %>% plot_high_chart()
Run Code Online (Sandbox Code Playgroud)
这是dput数据的结果:
structure(list(Year = c(2016, 2017, 2017, 2018, 2018, 2018),
service = structure(c(10L, 3L, …Run Code Online (Sandbox Code Playgroud) 我在 highcharter 中制作了一个时间线图表,Highcharter 的 R api。我希望它为每个颜色段显示一个图例项,但只显示一次。它现在呈现的方式,它对每个名称重复。我发现您可以在 JavaScript 中的 higcharts 中“链接”系列,但还没有弄清楚如何在 R 中进行。
这是我在做什么:
df %>%
hchart("timeline", hcaes(x = date,
label = paste0("<b>", company, "</b>"),
color = segment,
name = paste0("<i>", segment, "</i>")),
dataLabels = list(allowOverlap = FALSE),
linkedTo = "color",
showInLegend = TRUE) %>%
hc_yAxis(visible = FALSE) %>%
hc_xAxis(type = "datetime")
Run Code Online (Sandbox Code Playgroud)
还有一些数据:
df <- structure(list(date = c(1446681600000, 1420070400000, 1.419984e+12,
1356998400000, 1348531200000, 1310342400000, 1.238544e+12, 1.238544e+12,
1.222992e+12, 1187913600000), company = c("SymphonyAI - Ayasdi",
"Longbow (Orlando)", "CFD Research", "DB CyberTech", "M5 Network Security", …Run Code Online (Sandbox Code Playgroud) 我正在审查一些代码并发现了这个奇怪的结果。如果您有一个具有一个整数类型值的数据帧,并且将其强制为整数,您会得到我认为您所期望的结果:
library(dplyr)
tibble(x = as.integer(c(1))) %>% as.integer()
[1] 1
Run Code Online (Sandbox Code Playgroud)
但如果它是 int64 类型,你会得到一些奇怪的东西:
library(bit64)
tibble(x = as.integer64(c(1))) %>% as.integer()
[1] 0
Run Code Online (Sandbox Code Playgroud)
是什么赋予了?我想这和班级有关系int64。但为什么我会得到零呢?这只是糟糕的错误处理吗?
dput好的,当您调用数据框时,有一个提示会发生什么int64:
structure(list(x = structure(4.94065645841247e-324,
class = "integer64")),
row.names = c(NA, -1L),
class = c("tbl_df", "tbl", "data.frame"))
Run Code Online (Sandbox Code Playgroud)
as.integer()正确地将 4.94065645841247e-324 转换为零也是如此。但为什么 DF 中存储的是这些内容呢?
另外,为了确保这不是bit64问题,我在从数据库返回的实际 df 上得到了非常相似的结构:
structure(list(max = structure(2.78554211125295e-320,
class = "integer64")),
class = "data.frame",
row.names = c(NA, -1L))
Run Code Online (Sandbox Code Playgroud) 我似乎看不到paste/ paste0与str_c将单个向量组合为单个字符串,将多个字符串组合为一个字符串或将多个向量组合为单个字符串之间的区别。
在写问题时,我发现了这个问题:https : //www.rdocumentation.org/packages/stringr/versions/1.3.1/topics/str_c。来自richie@datacamp.com的社区示例说,不同之处在于str_c将空白视为空白(而不是NA),并更适当地进行了回收。还有其他区别吗?
因此,我需要将在R / Rstudio中制作的图复制并粘贴到PowerPoint中(不幸的是,我的政府客户要求所有内容都在PowerPoint中,否则只需将图形放在Rmarkdown文件中就可以轻松解决此问题)。直到最近我发现透明对象无法复制并粘贴到PowerPoint中才成为一个大问题,至少在我一直使用的方法中(导出>复制为图元文件>复制图>粘贴) 。相反,在透明对象所在的位置,现在什么都没有了。我读了一些书后发现,这与我的“图形引擎”不支持透明对象有关,并且“开罗”引擎可以,但是我不明白这意味着什么,或者是否可以在Rstudio中更改微软幻灯片软件。
这是一些示例代码:
iris %>%
mutate(small_petal = if_else(Petal.Width > 1.5, "big", "small")) %>%
ggplot(aes(x = Sepal.Length, y = Sepal.Width, color = Species, alpha = small_petal)) +
geom_point()
Run Code Online (Sandbox Code Playgroud)
我尝试了一种非常奢侈的解决方法来获取所需的颜色。我制作了不透明的自定义RGB值,以模仿我想要的透明度。然后,我使用mutate四个if_elses 将它们附加到data.frame (每种alpha颜色组合使用一种颜色)。然后scale_fill_identity,我使用我的自定义颜色,但随后生成了带有不需要元素的图例。我需要使用以下内容使图例与至少一些我想要的元素一起出现:
scale_fill_identity(guide = "legend",
labels = c("DUMMY LABEL",
"DUMMY LABEL",
"Small Petal",
"Big Petal"),
breaks = unique(iris$custom_colors))
Run Code Online (Sandbox Code Playgroud)
然后,我删除PowerPoint中不需要的图例对象。任何帮助是极大的赞赏。
我正在刷新我的迭代,正在为R for Data Science做一些循环练习(http://r4ds.had.co.nz/iteration.html).我写这个循环来模仿"墙上的99瓶啤酒":
number <- 99:0
for (i in number) {
print(paste(number, "bottles of beer on the wall"))
}
Run Code Online (Sandbox Code Playgroud)
这重复几次然后停止,我不清楚为什么会发生这种情况?
UPDATE
上面的99:0并不意味着99,这将产生期望的结果.我的代码的问题是没有正确编制索引,如下面的答案中所述.
r ×10
dplyr ×2
ggplot2 ×2
javascript ×2
rlang ×2
tidyeval ×2
facet ×1
feather ×1
for-loop ×1
highcharts ×1
int64 ×1
integer ×1
list ×1
pandas ×1
powerpoint ×1
python ×1
rstudio ×1
stringr ×1
visnetwork ×1