小编Cpt*_*emo的帖子

如何使用ggplot绘制向量的直方图/频率计数?

我想用ggplot绘制数值向量的值的频率.随着plot()是相当简单,但我不能得到同样的结果ggplot.

library(ggplot2)    
dice_results <- c(1,3,2,4,5,6,5,3,2,1,6,2,6,5,6,4)    
hist(dice_results)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ggplot(dice_results) + geom_bar()
# Error: ggplot2 doesn't know how to deal with data of class numeric
Run Code Online (Sandbox Code Playgroud)

我应该创建一个数据框ggplot()来绘制我的矢量吗?

r vector histogram ggplot2

6
推荐指数
3
解决办法
2万
查看次数

如何使用对数标度和离散值改进ggplot直方图的方面

我正在努力提高离散值直方图的清晰度和方面,我需要用对数标度来表示.

请考虑以下MWE

set.seed(99)
data <- data.frame(dist = as.integer(rlnorm(1000, sdlog = 2)))
class(data$dist)
ggplot(data, aes(x=dist)) + geom_histogram()
Run Code Online (Sandbox Code Playgroud)

哪个产生

在此输入图像描述

然后

ggplot(data, aes(x=dist)) + geom_line() + scale_x_log10(breaks=c(1,2,3,4,5,10,100))
Run Code Online (Sandbox Code Playgroud)

这可能更糟糕

在此输入图像描述

从现在开始,它给人的印象是"1"和"2"之间缺少某些东西,而且还不完全清楚哪个条的值为"1"(条形图位于刻度线的右侧),哪个条形图的值为"2" "(栏位于刻度线的左侧).

据我所知,技术上ggplot为对数刻度提供了"正确"的视觉答案.然而作为观察者,我在理解它时遇到了一些问题.

有可能改善一些东西吗?

编辑:

当我将Jaap解决方案应用于我的真实数据时会发生这种情况

在此输入图像描述

x = 0和x = 1之间以及x = 1和x = 2之间的下降来自何处?我的值是离散的,但那么为什么绘图也映射x = 1.5和x = 2.5?

r ggplot2

6
推荐指数
2
解决办法
1万
查看次数

如何避免列表命名的unlist()修改

我对有的名字感到有点困惑unlist().请考虑以下MWE

vector1 <- c(1,2,3,4,5,6,7,8,9,10)
names(vector1) <- c(1,2,2,3,4,4,5,6,6,6)
names(vector1)
# [1] "1" "2" "2" "3" "4" "4" "5" "6" "6" "6"
list1 <- split(vector1,names(vector1))
names(list1)
# [1] "1" "2" "3" "4" "5" "6"
Run Code Online (Sandbox Code Playgroud)

但是之后

names(unlist(list1))
# [1] "1.1" "2.2" "2.2" "3.3" "4.4" "4.4" "5.5" "6.6" "6.6" "6.6"
Run Code Online (Sandbox Code Playgroud)

根据文件 unlist()

默认情况下,unlist尝试保留x中存在的命名信息.

所以我无法理解这种特殊的行为.

我的问题是由创建的名称unlist()无法与原始名称匹配vector1.

r list

5
推荐指数
2
解决办法
173
查看次数

如何定义自定义临时目录

我是运行 R 3.1 的 Ubuntu 12.04.4 机器的用户(无管理员权限)。

我发现我无法启动 R,因为Fatal error: cannot create 'R_TempDir. 问题非常简单(并且已经在此处记录):没有足够的磁盘空间来初始化 R 临时目录。的确:

df /tmp
Filesystem     1K-blocks     Used Available Use% Mounted on
/dev/vda1       10320184 10284088         0 100% /
Run Code Online (Sandbox Code Playgroud)

但是后来我在不同的分区 ( /dev/vdb)上有足够的空间。我怎么能告诉 R 在不同的位置创建一个临时文件夹?

由于我无法启动 R,我尝试在我的 .Rprofile

.First <- function(){
  ## other stuff
  tempdir("path/to/plenty/of/space/tmp")
  ## other stuff
}
Run Code Online (Sandbox Code Playgroud)

然而它不起作用。

Error in tempdir("path/to/plenty/of/space/tmp") : 
  unused argument ("path/to/plenty/of/space/tmp")
Calls: .First -> tempdir
Execution halted
Run Code Online (Sandbox Code Playgroud)

编辑:问题已经在这里回答。创建一个.Rprofile并添加这一行TMP = '<your-desired-tempdir>'

r

5
推荐指数
1
解决办法
3182
查看次数

如何使用简单矩阵的corrplot

我有一个简单的8乘8矩阵

M <- matrix(rnorm(64), nrow=8, ncol=8) 
Run Code Online (Sandbox Code Playgroud)

我该怎样转换它来绘制它library(corrplot)?没有转换,错误是:

corrplot.mixed(M)
Run Code Online (Sandbox Code Playgroud)

corrplot中的错误(corr,type ="upper",method = upper,diag = TRUE,tl.pos = tl.pos,:矩阵不在[-1,1]中!我猜这会假设矩阵应该是[-1,1]?

r matrix r-corrplot

5
推荐指数
1
解决办法
8870
查看次数

R:标题用par()减半

我有这个数字:

require(corrplot)
par(oma=c(0,0,2,0), mfrow = c(1, 3))
for (country in c("Italy","Germany","Afghanistan")) {
  corrplot.mixed(cor(data.frame(v1=rnorm(40),
                                v2=rnorm(40),
                                v3=rnorm(40),
                                v4=rnorm(40),
                                v5=rnorm(40),
                                v6=rnorm(40),
                                v7=rnorm(40),
                                v8=rnorm(40)), use="pairwise.complete.obs"),
                 main=country)
}
par(mfrow = c(1, 1))
Run Code Online (Sandbox Code Playgroud)

产生的标题减半:

在此输入图像描述

按照这个答案我设置oma=c(0,0,2,0)但它不会影响结果.我不确定应修改哪个边距.我看着?par并修改了"oma","omd","omi","mai","mar"而没有结果.

plot r r-corrplot

5
推荐指数
1
解决办法
2508
查看次数

R:计算列列表中的对象

让我定义一个数据框,其中一列id由整数向量组成

df <- data.frame(id = c(1,2,2,3,3))
Run Code Online (Sandbox Code Playgroud)

和一列objects,而不是字符向量列表。让我们使用以下函数创建列

randomObjects <- function(argument) {
  numberObjects <- sample(c(1,2,3,4), 1)
  vector <- character()
  for (i in 1:numberObjects) {
    vector <- c(vector, sample(c("apple","pear","banana"), 1))
  }
  return(vector)
} 
Run Code Online (Sandbox Code Playgroud)

然后用 lapply

set.seed(28100)
df$objects <- lapply(df$id, randomObjects)
Run Code Online (Sandbox Code Playgroud)

结果数据框是

df
#   id                 objects
# 1  1            apple, apple
# 2  2     apple, banana, pear
# 3  2                  banana
# 4  3    banana, pear, banana
# 5  3 pear, pear, apple, pear
Run Code Online (Sandbox Code Playgroud)

现在我想id用这样的数据框计算每个对象对应的对象数量

summary <- …
Run Code Online (Sandbox Code Playgroud)

r list dataframe

5
推荐指数
1
解决办法
851
查看次数

RSelenium:查找与Xpath的链接

我想在RSelenium和页面中找到PDF文件的所有链接Xpath.

请考虑

require(RSelenium)
RSelenium::checkForServer()

RSelenium::startServer()

remDr <- remoteDriver()
remDr$open()

remDr$navigate("https://cran.r-project.org/manuals.html")
Run Code Online (Sandbox Code Playgroud)

在页面中有多个指向PDF文件的链接,例如

<a href="doc/manuals/r-release/R-intro.pdf">PDF</a>
Run Code Online (Sandbox Code Playgroud)

但我第一次尝试

remDr$findElement(using = "xpath", "//a[contains(@href,'.pdf')/@href")
Run Code Online (Sandbox Code Playgroud)

产生以下错误

Error:   Summary: InvalidSelector
     Detail: Argument was an invalid selector (e.g. XPath/CSS).
     class: org.openqa.selenium.InvalidSelectorException
Run Code Online (Sandbox Code Playgroud)

我的语法错了吗?

selenium xpath r rselenium

5
推荐指数
1
解决办法
3617
查看次数

当绘图中使用3种以上的颜色时,在图例中会产生误导性的geom_smooth颜色

请考虑以下事项

set.seed(28100)
random_data <- data.frame(x=rnorm(100),
                          y=rnorm(100),
                          colour=sample(c("a","b","c"),  100, replace=TRUE),
                          class=sample(c("alpha","beta"),  100, replace=TRUE))
require(ggplot2)
ggplot() +
  geom_smooth(data=random_data, aes(x=x, y=y, colour=colour, linetype=class), se=FALSE)
Run Code Online (Sandbox Code Playgroud)

返回

在此输入图像描述

图例中线条的颜色具有class误导性,因为蓝色 - - 的默认颜色geom_smooth- 也用于映射属性c.

如何设置geom_smooth中性色的默认颜色 - 比方说 - 灰色?

r ggplot2

5
推荐指数
1
解决办法
116
查看次数

SPARQL:如果第一个选项不可用,如何以可用语言获取标签

如果查询返回的Wikidata资源没有以我过滤的语言提供的可用标签,则获得一个空单元格。

SELECT *
WHERE
{
    ?country wdt:P31 wd:Q6256.
    ?country rdfs:label ?country_name
        FILTER(LANG(?country_name) = 'jbo').
}
Run Code Online (Sandbox Code Playgroud)

链接

如果第一种语言失败,如何请求以任何一种可用语言返回标签?

sparql wikidata linked-data

5
推荐指数
1
解决办法
496
查看次数