小编Tun*_*ung的帖子

你如何将多个.txt文件读入R?

我正在使用R来显示一些所有数据都是.txt格式的数据.目录中有几百个文件,我想一次性将它们全部加载到一个表中.

有帮助吗?

编辑:

列出文件不是问题.但是我无法从列表转到内容.我从这里尝试了一些代码,但是我得到了这个部分的错误:

all.the.data <- lapply( all.the.files,  txt  , header=TRUE)
Run Code Online (Sandbox Code Playgroud)

 Error in match.fun(FUN) : object 'txt' not found
Run Code Online (Sandbox Code Playgroud)

任何能够澄清这个问题的代码片段都将不胜感激.

r fread lapply read.table readr

23
推荐指数
5
解决办法
4万
查看次数

在R中,如何在ggplot2的scale_fill_brewer中更改一个值的颜色值?

我有一个R数据帧(df),我将其绘制为ggplot2中的条形图,并基于dataframe(df$type)中的列进行着色.现在,我使用默认的着色模式(scale_fill_brewer)来分配颜色.

如何将黑色分配给一个值(scale_fill_brewer)并使用scale_fill_brewer分配其余颜色?(所有其他df $类型都是从1到X的整数集合,其中X是唯一值的数量)

到目前为止,我已经能够通过计算出scale_fill_brewer用于N个不同项目的颜色集然后预先设置颜色黑色并将其传递给我来手动执行此操作df$type == -1.

rhg_cols1<- c("#000000","#F8766D","#7CAE00","#00BFC4","#C77CFF" )
ggplot(y=values,data=df, aes(x=name, fill=factor(type))) + 
  geom_bar()+ scale_fill_manual(values = rhg_cols1)
Run Code Online (Sandbox Code Playgroud)

问题是我需要一个无需手动分配颜色的解决方案,使用十六进制颜色计算器来计算scale_fill_brewer的十六进制值.

就像是:

ggplot(y=values,data=df, aes(x=name, fill=factor(type))) +
  geom_bar()+ scale_fill_brewer(value(-1, "black")
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:该解决方案必须适用于30多种颜色,适用于ColorBrewer的"Set2"

r colors ggplot2 colorbrewer

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

在图中着色部分标题

是否可以在图中着色部分标题?

x = 1:10
y = 1:10
plot(x, y, main="title (slope=1)")
Run Code Online (Sandbox Code Playgroud)

在这个情节中,我想将颜色slope=1改为红色.

formatting plot r colors ggplot2

21
推荐指数
2
解决办法
7587
查看次数

如何在ggplot2中围绕轴刻度标签创建一个框?

由于几个原因,我试图复制下面显示的怪诞情节.它违反了许多良好的数据可视化规则,因此出于培训目的,我的目标是使用ggplot2和解构它 - 一次删除或修改选择不当的功能.使用底部复制的数据和图表下方的代码,我越来越接近,但一直无法弄清楚如何包含一个值得注意的功能.

问题:有没有办法在三个刻度标签周围重现黑色阴影矩形?(如果是这样,可以直接创建另一个因子变量来识别这三个标签并将其字体更改为白色.)

在此输入图像描述

ggplot(plotpg19, aes(x = risks, y = scores, fill = colors)) +
  geom_bar(stat = "identity", width = 0.6) +
  scale_fill_manual(values = c("grey50", "deepskyblue2", "mediumorchid3", "gold")) +
  geom_text(aes(label = scores), hjust = -0.4, size = 8, face = "bold") +
  coord_flip() +
  theme_bw() + labs(x = NULL, y = NULL) +
  theme(panel.grid.major = element_blank()) +
  guides(fill = FALSE) +
  scale_y_continuous(breaks = seq(0, 100, 20), labels = seq(0, 100, 20), expand = c(0, 0)) +
  theme( …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 axis-labels

17
推荐指数
1
解决办法
879
查看次数

删除缺少x%的列/行

我想删除NA数据框中超过50%s的所有列或行.

这是我的解决方案:

# delete columns with more than 50% missings
miss <- c()
for(i in 1:ncol(data)) {
  if(length(which(is.na(data[,i]))) > 0.5*nrow(data)) miss <- append(miss,i) 
}
data2 <- data[,-miss]


# delete rows with more than 50% percent missing
miss2 <- c()
for(i in 1:nrow(data)) {
  if(length(which(is.na(data[i,]))) > 0.5*ncol(data)) miss2 <- append(miss2,i) 
}
data <- data[-miss,]
Run Code Online (Sandbox Code Playgroud)

但我正在寻找一个更好/更快的解决方案.

我也很感激dplyr解决方案

r dplyr

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

没有找到与R版本3.5.0兼容的RTools

我在安装R版本3.5.0的data.table时遇到问题,并建议检查是否正确安装了RTools.

安装了RTools 3.5(这似乎是最新的)我输入了

find_rtools(T)
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

WARNING: Rtools is required to build R packages, but no version 
of Rtools compatible with R 3.5.0 was found. 
(Only the following incompatible version(s) of Rtools were found:3.4,3.5)

Please download and install the appropriate version of Rtools from 
http://cran.r-project.org/bin/windows/Rtools/.
Run Code Online (Sandbox Code Playgroud)

所以一方面它看起来我安装了3.5,但它似乎认为有一个更新/不同的版本.

有什么想法吗?

packages r devtools data.table rtools

16
推荐指数
1
解决办法
5956
查看次数

合并行中不相交且包含NA的数据帧中的行

我有一个有两行的数据框:

| code | name  | v1 | v2 | v3 | v4 |
|------|-------|----|----|----|----|
| 345  | Yemen | NA | 2  | 3  | NA |
| 346  | Yemen | 4  | NA | NA | 5  |
Run Code Online (Sandbox Code Playgroud)

是否有一种简单的方法来合并这两行?如果我在"346"中重命名"345"会更容易吗?

r coalesce dataframe dplyr data.table

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

使用美元符号表示法($)将变量与facet_grid()或facet_wrap()一起传递给aes()时出现问题

我正在ggplot2做一些项目的分析,偶然我偶然发现一些(对我来说)奇怪的行为,我无法解释.当我写aes(x = cyl, ...)这个情节时,如果我使用相同的变量,它看起来会有什么不同aes(x = mtcars$cyl, ...).当我删除facet_grid(am ~ .)两个图表时再次相同.下面的代码是在我的项目中生成相同行为的代码之后建模的:

library(dplyr)
library(ggplot2)

data = mtcars

test.data = data %>%
  select(-hp)


ggplot(test.data, aes(x = test.data$cyl, y = mpg)) +
  geom_point() + 
  facet_grid(am ~ .) +
  labs(title="graph 1 - dollar sign notation")

ggplot(test.data, aes(x = cyl, y = mpg)) +
  geom_point()+ 
  facet_grid(am ~ .) +
  labs(title="graph 2 - no dollar sign notation")
Run Code Online (Sandbox Code Playgroud)

这是图1的图片:

图1  - 美元符号表示法

这是图2的图片:

图2  - 没有美元符号表示法

我发现我可以使用aes_string而不是aes将变量名称作为字符串传递来解决这个问题,但我想理解为什么ggplot表现得那样.在类似的尝试中也会出现问题facet_wrap.

对于任何提前帮助都很有帮助!如果我不理解,我会感到非常不舒服......

r ggplot2 r-faq

14
推荐指数
1
解决办法
1818
查看次数

在函数内部使用dplyr时出错

我正在尝试组合一个函数,从我的原始数据框创建一个子集,然后使用dplyr的SELECT和MUTATE根据萼片/花瓣的宽度和长度的总和给出我的大/小条目的数量.

filter <- function (spp, LENGTH, WIDTH) {
  d <- subset (iris, subset=iris$Species == spp) # This part seems to work just fine
  large <- d %>%                       
    select (LENGTH, WIDTH) %>%   # This is where the problem arises.
    mutate (sum = LENGTH + WIDTH) 
  big_samples <- which(large$sum > 4)
 return (length(big_samples)) 
}
Run Code Online (Sandbox Code Playgroud)

基本上,我希望函数返回大花的数量.但是,当我运行该函数时,我得到以下错误 -

filter("virginica", "Sepal.Length", "Sepal.Width")

 Error: All select() inputs must resolve to integer column positions.
The following do not:
*  LENGTH
*  WIDTH 
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

r function dplyr tidyeval

14
推荐指数
3
解决办法
5610
查看次数

如何在tidyr和ggplot2的函数中使用dplyr的enquo和quo_name

library(dplyr) #Devel version, soon-to-be-released 0.6.0
library(tidyr)
library(ggplot2)
library(forcats) #for gss_cat data
Run Code Online (Sandbox Code Playgroud)

我正在尝试编写一个函数,它结合了即将发布的dplyrdevel版本的quosures tidyr::gatherggplot2.到目前为止它似乎可以使用tidyr,但我在绘图方面遇到了麻烦.

以下功能似乎适用于tidyr's gather:

GatherFun<-function(gath){
  gath<-enquo(gath)

  gss_cat%>%select(relig,marital,race,partyid)%>%
    gather(key,value,-!!gath)%>%
    count(!!gath,key,value)%>%
    mutate(perc=n/sum(n))
}
Run Code Online (Sandbox Code Playgroud)

但我无法弄清楚如何让情节发挥作用.我试着用!!gathggplot2,但没有奏效.

GatherFun<-function(gath){
  gath<-enquo(gath)

  gss_cat%>%select(relig,marital,race,partyid)%>%
    gather(key,value,-!!gath)%>%
    count(!!gath,key,value)%>%
    mutate(perc=n/sum(n))%>%
    ggplot(aes(x=value,y=perc,fill=!!gath))+
       geom_col()+
       facet_wrap(~key, scales = "free") +
       geom_text(aes(x = "value", y = "perc", 
                     label = "perc", group = !!gath),
                 position = position_stack(vjust = .05))
}
Run Code Online (Sandbox Code Playgroud)

r ggplot2 dplyr tidyeval rlang

14
推荐指数
2
解决办法
3826
查看次数