我想随机化/洗牌一个向量。一些向量元素是相同的。混洗后,相同元素的最小距离应为 3(即两个其他元素应位于相同元素之间)。
考虑以下 R 中的示例向量:
x <- rep(LETTERS[1:5], 3) # Create example vector
x
# [1] "A" "B" "C" "D" "E" "A" "B" "C" "D" "E" "A" "B" "C" "D" "E"
Run Code Online (Sandbox Code Playgroud)
如果我使用示例函数对向量进行混洗,则某些相同的元素可能会靠得太近。例如,如果我使用以下 R 代码,元素“C”会直接出现在位置 5 和 6 处:
set.seed(53135)
sample(x) # sample() function puts same elements too close
# [1] "B" "A" "E" "D" "C" "C" "E" "A" "B" "C" "D" "E" "A" "D" "B"
Run Code Online (Sandbox Code Playgroud)
如何确保相同元素的最小距离为三个?
我有许多不同的字符,具有以下结构:
# Example
x <- "char1, char2, char3"
Run Code Online (Sandbox Code Playgroud)
我想用"&"删除此字符的最后一个逗号,即所需的输出应如下所示:
# Desired output
"char1, char2 & char3"
Run Code Online (Sandbox Code Playgroud)
我怎么能用"&"替换字符的最后一个逗号?
我想以自己指定的角度旋转 ggplot2 图。我发现如何旋转轴的文字用element_text(angle = 20)。我想对整个情节做类似的事情。
可重现的例子:
set.seed(123)
data_plot <- data.frame(x = sort(rnorm(1000)),
y = sort(rnorm(1000)))
ggplot(data_plot, aes(y, x)) +
geom_line() # + theme(axis.title.x = element_text(angle = 20))
Run Code Online (Sandbox Code Playgroud)
此图应旋转:
我想创建一个流程图DiagrammeR包R。在某些节点内,我想减小文本某些部分的字体大小。
考虑以下示例R:
library("DiagrammeR")
# Create a node data frame (ndf)
ndf <- create_node_df(n = 4,label = c("aaa", "bbb",
"Same size\nThese letters\nshould be smaller",
"ccc"))
# Create an edge data frame (edf)
edf <- create_edge_df(from = c(1, 2, 3, 3),
to = c(4, 3, 1, 4))
# Create a graph with the ndf and edf
graph <- create_graph(nodes_df = ndf,
edges_df = edf)
# Print graph
graph %>%
render_graph()
Run Code Online (Sandbox Code Playgroud)
中间节点的字体大小应该部分减小。文本“相同大小”应保持原样。应减小“这些字母应该更小”文本的字体大小。
问题:如何调整节点内某些文本部分的字体大小?
我想用这个gganim包制作一个动画条形图。条形图的坐标应通过coord_flip(即水平条)翻转,并且 x 轴应根据条的长度灵活设置通过view_follow。
考虑以下示例数据:
# Create example data
df <- data.frame(ordering = c(rep(1:3, 2), 3:1, rep(1:3, 2)),
year = factor(sort(rep(2001:2005, 3))),
value = round(runif(15, 0, 100)),
group = rep(letters[1:3], 5))
Run Code Online (Sandbox Code Playgroud)
如果我创建一个没有 的动画条形图coord_flip,一切正常:
library("gganimate")
library("ggplot2")
# Create animated ggplot without coord_flip
ggp <- ggplot(df, aes(x = ordering, y = value)) +
geom_bar(stat = "identity", aes(fill = group)) +
transition_states(year, transition_length = 2, state_length = 0) +
view_follow(fixed_x = TRUE) # +
# coord_flip() …Run Code Online (Sandbox Code Playgroud) 我想创建一个流程图DiagrammeR包R。图形应如下例所示,但我想在箭头上方添加一些标签。
考虑以下可重现的示例R:
library("DiagrammeR")
# Create a node data frame (ndf)
ndf <- create_node_df(n = 4,
shape = c("rectangle"))
# Create an edge data frame (edf)
edf <- create_edge_df(from = c(1, 2, 3, 3),
to = c(4, 3, 1, 4),
rel = c("a", "b", "c", "d"))
# Create a graph with the ndf and edf
graph <- create_graph(nodes_df = ndf,
edges_df = edf)
# Create a PDF file for the graph (`graph.pdf`)
graph %>%
export_graph(file_name …Run Code Online (Sandbox Code Playgroud) 基于 ggplot2 包,我想为条形图的不同条添加不同的纹理。此外,我想将这些纹理添加到条形图的图例中。
考虑以下可重现的示例:
# Create example data
data_ggp <- data.frame(category = rep(c("cat1", "cat2", "cat3"), 4),
values = c(0.664, 0.045, 0.291, 0.482, 0.029, 0.489, 0.537, 0.027, 0.436, 0.536, 0.028, 0.436),
group = c(rep("group1a", 3), rep("group1b", 3), rep("group2a", 3), rep("group2b", 3)))
# Load ggplot2
library("ggplot2")
# Draw barchart (not overlayed)
ggplot(data_ggp, aes(category, values)) +
geom_bar(stat = "identity", aes(fill = group), position = "dodge") +
scale_fill_manual(" ",
labels = c("group1a", "group1b", "group2a", "group2b"),
values = c("group1a" = "deepskyblue4", "group1b" = "darkolivegreen4",
"group2a" …Run Code Online (Sandbox Code Playgroud) 我想绘制一个随机主题的ggplot(事实上,我想绘制许多情节,每个情节都有不同的主题).考虑以下可重现的示例:
# Exmple data
df <- data.frame(x = 1:10, y = 1:10)
# Select theme randomly
random_theme <<- sample(c("theme_gray", "theme_bw", "theme_light", "theme_dark", "theme_minimal", "theme_classic"), 1)
# Draw ggplot
ggplot(df, aes(x, y)) +
geom_line() +
random_theme # This line does not work
Run Code Online (Sandbox Code Playgroud)
问题:如何随机选择ggtheme?
我想用 gganimate 包创建一个动画条形图。在每个条形的顶部,我想将条形的值四舍五入到零位。
考虑以下示例:
# Example data
df <- data.frame(ordering = c(rep(1:3, 2), 3:1, rep(1:3, 2)),
year = factor(sort(rep(2001:2005, 3))),
value = round(runif(15, 0, 100)),
group = rep(letters[1:3], 5))
# Create animated ggplot
ggp <- ggplot(df, aes(x = ordering, y = value)) +
geom_bar(stat = "identity", aes(fill = group)) +
transition_states(year, transition_length = 2, state_length = 0) +
geom_text(y = df$value, label = as.integer(round(df$value)))
ggp
Run Code Online (Sandbox Code Playgroud)
不幸的是,我没有设法正确地舍入这些值。有没有办法在转换期间舍入值?
我想使用 R 来提取当前在 Web 浏览器中打开的所有 URL。考虑以下示例:
如何从 R 中提取这两个 URL,以获得以下输出?
my_urls <- c("https://www.google.de/", "https://www.amazon.com/")
my_urls
### [1] "https://www.google.de/" "https://www.amazon.com/"
Run Code Online (Sandbox Code Playgroud)
经过一些研究,我怀疑这可能与RSelenium 包有关,但不幸的是我无法找出合适的 R 代码。