当我尝试使用dcast(从reshape2包中)重塑特定数据帧时,RStudio崩溃了.我发现崩溃实际上发生在R本身,所以我在R.app中运行了我的强制转换代码并得到了错误类型,它给这个站点起了名字:Error: segfault from C stack overflow.在Google和SO的帮助下,我了解到这是一个内存访问错误.
好的,我走得那么远,但我不知道从哪里开始.我无法提供真正可重现的示例,因为我的数据框大约是558,000行,并且小玩具示例中不会出现此问题.例如,即使我拿了一个50,000行的数据子集,也dcast可以正常工作.是否会出现导致问题的特定数据行?如果是这样,任何人都可以建议寻找哪些功能可能导致我得到的错误类型?
这是我正在构建的数据框的子集(对于某些变量使用伪值),然后是我正在使用的转换函数.我还在dput下面的函数中包含了这一小段数据,以防它玩起来有所帮助.实际数据集具有约700个值prog,15个值prog1和5个值fa.type.
id term yr nslds acad.lev prog prog1 fa.type amount
1 1 Fall 2009 2010 Graduate Graduate loan 1 Other Loans Loan 5000
2 1 Spring 2010 2010 Graduate Graduate loan 1 Other Loans Loan 5000
3 2 Fall 2009 2010 Graduate Graduate loan 2 Stafford Loan Loan 8781
4 2 Spring 2010 2010 Graduate Graduate loan …Run Code Online (Sandbox Code Playgroud) 在ggplot2中,元素的大小是单独指定的.当图形的大小发生变化时,元素(例如图例)不会改变.当输出ggplot2数字的大小随浏览器窗口而变化时,这可能是Shiny中的问题.下面是虚拟Shiny应用程序的代码和不同浏览器窗口大小的两个输出数字.较小的数字是丑陋的,因为其传奇的一部分已被切断.
有没有一种方法可以直接在ggplot2中使用图形大小缩放图例大小,而无需将图形预先保存为Shiny应用程序的图像文件?
library(shiny)
library(ggplot2)
ui <- fluidPage(
br(), br(), br(),
plotOutput("test", height = "auto")
)
server <- function(input, output, session) {
output$test <- renderPlot(
height = function() {
0.8 * session$clientData$output_test_width
},
expr = {
aaa <- ggplot(mtcars, aes(wt, mpg, color = cyl)) +
geom_point() +
theme(legend.position = c(0.9, 0.9))
print(aaa)
}
)
}
shinyApp(ui, server)
Run Code Online (Sandbox Code Playgroud)
但是在小浏览器窗口中,图例顶部没有显示:
在绘制时,删除网格线的标准方法似乎是徒劳的geom_sf.
例如,如果我们绘制一个简单的ggplot对象,这将删除网格
library(tidyverse)
library(sf)
mtcars %>%
ggplot(
aes(disp, hp)
) +
geom_point() +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
Run Code Online (Sandbox Code Playgroud)
回报
但是在绘图时使用相同的代码无法删除网格 geom_sf
"shape/nc.shp" %>%
system.file(
package = "sf"
) %>%
st_read(
quiet = TRUE
) %>%
ggplot() +
geom_sf(aes(fill = AREA)) +
theme(
panel.grid.major = element_blank(),
panel.grid.minor = element_blank()
)
Run Code Online (Sandbox Code Playgroud)
我正在使用ftable创建一个平坦的列联表.但是,当我对列联表进行子集化时,R会删除行名和列名.有没有办法对表进行子集,使行和列名保留在子集表中?这是一个例子:
# Create fake data
Group1 = sample(LETTERS[1:3], 20, replace=TRUE)
Group2 = sample(letters[1:3], 20, replace=TRUE)
Year = sample(c("2010","2011","2012"), 20, replace=TRUE)
df1 = data.frame(Group1, Group2, Year)
# Create flat contingency table with column margin
table1 = ftable(addmargins(table(df1$Group1, df1$Group2, df1$Year), margin=3))
# Select rows with sum greater than 2
table2 = table1[table1[ ,4] > 2, ]
> table1
2010 2011 2012 Sum
A a 0 1 2 3
b 2 1 0 3
c 0 0 0 0
B a 0 1 …Run Code Online (Sandbox Code Playgroud) 我正在阅读"ggplot2 - 用于数据分析的优雅图形"一书(Wickham,2009),"Scaling"一节(第32页)说:
然后缩放涉及将数据值映射到此空间中的点.有很多方法可以做到这一点,但是由于cyl是一个分类变量,我们将值映射到色轮上均匀分布的色调,如图3.4所示.当变量是连续的时,使用不同的映射.这些转换的结果是表3.4,其中包含对计算机有意义的值.


这本书没有详细解释如何获得这个表3.4,更不用说3.4了.内置数据库是mpg.任何人都知道如何获得此表格和图表?提前致谢.
使用以下代码:
library(ggplot2)
set.seed(6809)
diamonds <- diamonds[sample(nrow(diamonds), 1000), ]
diamonds$cut <- factor(diamonds$cut,
levels = c("Ideal", "Very Good", "Fair", "Good", "Premium"))
# Repeat first example with new order
p <- ggplot(diamonds, aes(carat, ..density..)) +
geom_histogram(binwidth = 1)
p + facet_grid(color ~ cut)
Run Code Online (Sandbox Code Playgroud)
我可以创建下图:

我的问题是:
使用ggparcoordGGally包中的绘制平行坐标图时,我遇到了困难.由于有两个分类变量,我想在可视化中显示的内容如下图所示.我发现,在ggparcoord,groupColumn只允许一个单一的变量由组(颜色),且可靠地我可以使用showPoints标记在轴上的值,但我还需要改变这些标记物的形状根据分类变量.还有其他包可以帮助我实现我的想法吗?
任何回复将不胜感激!谢谢!

我想在1x3布局中绘制三个图形.只有第一个图形需要有垂直轴标签,但我希望所有三个绘图区域的大小完全相同.如果没有或所有图表都有轴标签,这将没有问题.但是,当一个有轴标签而另外两个没有时,如何让所有三个图形大小相同?我试图在基本图形中执行此操作,因为这是我最熟悉的,但如果它们提供更好的方法来解决我的问题,我会很乐意使用grid或ggplot2.
这是一些假数据,我的绘图代码和情节本身:
# Fake Data
data = structure(list(y1 = 1:5, y2 = c(1.2, 2.4, 3.6, 4.8, 6), y3 = c(1.44,
2.88, 4.32, 5.76, 7.2)), .Names = c("y1", "y2", "y3"),
row.names = c("I needed 12 units for financial aid",
"I couldn't find any other open classes",
"I might be adding a major or minor",
"The class seemed interesting", "The class fit into my schedule"
), class = "data.frame")
# Plotting code
par(mar=c(5,15,4,1))
par(mfrow=c(1,3))
barplot(data$y1,names.arg=row.names(data), horiz=TRUE,las=1, +
xlim=c(0,8), main="Group 1")
par(mar=c(5,1,4,1))
barplot(data$y2,names.arg=row.names(data), …Run Code Online (Sandbox Code Playgroud) 我有一个小写的字符串向量.我想将它们改为标题案例,这意味着每个单词的第一个字母都会被大写.我已经设法用一个双循环来做,但我希望有一个更有效和优雅的方式来做到这一点,也许是一个单行gsub和一个正则表达式.
这里有一些示例数据,以及有效的双循环,其次是我尝试过的其他不起作用的东西.
strings = c("first phrase", "another phrase to convert",
"and here's another one", "last-one")
# For each string in the strings vector, find the position of each
# instance of a space followed by a letter
matches = gregexpr("\\b[a-z]+", strings)
# For each string in the strings vector, convert the first letter
# of each word to upper case
for (i in 1:length(strings)) {
# Extract the position of each regex match for the string in row …Run Code Online (Sandbox Code Playgroud) 我在rCharts中创建了一个sankey图,但有一个问题.如何添加颜色?我想用不同的颜色来表示每个节点,这样就可以更容易地对路径进行虚拟化,而不是仅仅看到连接所有内容的相同灰线.代码和输出如下:
require(rCharts)
require(rjson)
x = read.csv('/Users/<username>/sankey.csv', header=FALSE)
colnames(x) <- c("source", "target", "value")
sankeyPlot <- rCharts$new()
sankeyPlot$set(
data = x,
nodeWidth = 15,
nodePadding = 10,
layout = 32,
width = 500,
height = 300,
units = "TWh",
title = "Sankey Diagram"
)
sankeyPlot$setLib('http://timelyportfolio.github.io/rCharts_d3_sankey')
sankeyPlot
Run Code Online (Sandbox Code Playgroud)
这是我的图表的样子

非常感谢!