小编use*_*102的帖子

grep使用具有多个模式的字符向量

我试图用来grep测试字符串向量是否存在于另一个向量中,并输出存在的值(匹配模式).

我有一个这样的数据框:

FirstName Letter   
Alex      A1
Alex      A6
Alex      A7
Bob       A1
Chris     A9
Chris     A6
Run Code Online (Sandbox Code Playgroud)

我有一个字符串模式的向量可以在"Letter"列中找到,例如:c("A1", "A9", "A6").

我想检查模式向量中的任何字符串是否出现在"Letter"列中.如果是,我想要输出唯一值.

问题是,我不知道如何使用grep多种模式.我试过了:

matches <- unique (
    grep("A1| A9 | A6", myfile$Letter, value=TRUE, fixed=TRUE)
)
Run Code Online (Sandbox Code Playgroud)

但它给了我0场比赛,这是不是真的,任何建议?

regex r

122
推荐指数
8
解决办法
19万
查看次数

折叠相交的区域

我试图找到一种方法来折叠具有相交范围的行,用"开始"和"停止"列表示,并将折叠值记录到新列中.例如,我有这个数据框:

my.df<- data.frame(chrom=c(1,1,1,1,14,16,16), name=c("a","b","c","d","e","f","g"), start=as.numeric(c(0,70001,70203,70060, 40004, 50000872, 50000872)), stop=as.numeric(c(71200,71200,80001,71051, 42004, 50000890, 51000952)))


chrom name  start   stop
 1    a        0    71200
 1    b    70001    71200
 1    c    70203    80001
 1    d    70060    71051
14    e    40004    42004
16    f 50000872 50000890
16    g 50000872 51000952
Run Code Online (Sandbox Code Playgroud)

我试图找到重叠的范围并记录"开始"和"停止"中折叠的重叠行所涵盖的最大范围以及折叠行的名称,所以我会得到:

chrom start   stop      name
 1    70001    80001    a,b,c,d
14    40004    42004    e
16    50000872 51000952 f,g
Run Code Online (Sandbox Code Playgroud)

我想我可以像这样使用IRanges包:

library(IRanges)
ranges <- split(IRanges(my.df$start, my.df$stop), my.df$chrom)
Run Code Online (Sandbox Code Playgroud)

但是我在收到折叠列时遇到了麻烦:我尝试过findOvarlaps但是这个

ov <- findOverlaps(ranges, ranges, type="any")
Run Code Online (Sandbox Code Playgroud)

但我不认为这是对的.

任何帮助将非常感激.

r bioinformatics overlap

10
推荐指数
2
解决办法
2733
查看次数

R填充值取决于组合

我有一个组合的几个(可变)字母的列表,例如:

vec = c("a", "b", "c")
comb = unlist(lapply(1:length(vec), combn, x = vec, simplify = FALSE), recursive = FALSE) 
# this creates all the combinations of the vector I am interested in, i.e. for three letters:
# a b c ab ac bc abc
Run Code Online (Sandbox Code Playgroud)

对于每个组合,我试图根据位置填充元素到与向量数量相同的向量中.所以我想得到:

a =   200
b =   020
c =   002
ab =  220
ac =  202
bc =  022
abc = 222
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试使用循环替换数组i,j的每个元素但是因为所有值都是"2",所以必须有更有效的方法来执行此操作?非常感谢!!

arrays binary combinations loops r

8
推荐指数
3
解决办法
197
查看次数

使用gridExtra排列许多图

我花了很多时间试图在一个情节中拟合11个图并使用它们进行排列,gridExtra但是我已经失败了,所以我转向你希望你可以提供帮助.

我有11个钻石分类(称之为size1)和其他11个分类(size2)我想绘制每个增加size1和增加clarity(从1到6)的中位数价格如何随着size2钻石的增加而变化,并绘制所有11个地块的图表.相同的图表.我尝试gridExtra按照其他帖子的建议使用,但传说远在右边,所有的图形都向左挤压,请你帮我弄清楚如何gridExtra指定图例的"宽度" ?我找不到任何好的解释.非常感谢你的帮助,我真的很感激...

我一直试图找到一个很好的例子来重新创建我的数据框,但也失败了.我希望这个数据框有助于理解我正在尝试做什么,我无法让它工作并且与我的相同,有些情节没有足够的数据,但重要的部分是使用图表的配置gridExtra(尽管如果您对其他部分有其他意见,请告诉我们):

library(ggplot2)
library(gridExtra)

df <- data.frame(price=matrix(sample(1:1000, 100, replace = TRUE), ncol = 1))

df$size1 = 1:nrow(df)
df$size1 = cut(df$size1, breaks=11)
df=df[sample(nrow(df)),]
df$size2 = 1:nrow(df)
df$size2 = cut(df$size2, breaks=11)
df=df[sample(nrow(df)),]
df$clarity = 1:nrow(df)
df$clarity = cut(df$clarity, breaks=6)

# Create one graph for each size1, plotting the median price vs. the size2 by clarity:
for (c in 1:length(table(df$size1))) {

  mydf = …
Run Code Online (Sandbox Code Playgroud)

r ggplot2 gridextra

7
推荐指数
1
解决办法
3053
查看次数

将包含具有相同名称的对象的多个.RData文件合并到一个.RData文件中

我有很多.RData文件,包含我在之前分析中保存的一个数据帧,并且数据框对于每个加载的文件都具有相同的名称.所以例如使用load(file1.RData)我得到一个名为'df'的数据框,然后使用load(file2.RData)我得到一个名为'df'的数据框.我在想,如果这是在所有可能的,因为我需要一次加载所有这些,与每名所有这些.RData文件合并成一个大的.RData文件Df等于文件名称,这样我就可以使用不同的数据帧.

我可以使用下面的代码执行此操作,但它非常复杂,必须有一个更简单的方法来执行此操作...感谢您的建议.

假设我有3个.RData文件,并希望将所有文件保存在名为"main.RData"的文件中,并使用其特定名称(现在它们都以"df"形式出现):

all.files = c("/Users/fra/file1.RData", "/Users/fra/file2.RData", "/Users/fra/file3.RData")
assign(gsub("/Users/fra/", "", all.files[1]), local(get(load(all.files[1]))))
rm(list= ls()[!(ls() %in% (ls(pattern = "file")))])
save.image(file="main.RData")


all.files = all.files = c("/Users/fra/file1.RData", "/Users/fra/file2.RData", "/Users/fra/file3.RData")

for (f in all.files[-1]) {
  assign(gsub("/Users/fra/", "", f), local(get(load(f))))
  rm(list= ls()[!(ls() %in% (ls(pattern = "file")))])
  save.image(file="main.RData")
}
Run Code Online (Sandbox Code Playgroud)

storage r

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

合并R中的两个数据帧并查找公共值和不匹配值

我试图找到一个函数来匹配一个公共列上不同长度的两个数据帧,并创建一个不同的列,指定它是否找到匹配.所以,例如,df1是:

Name Position location
francesca A 75
cristina B 36
Run Code Online (Sandbox Code Playgroud)

而df2是:

location Country
75 UK
56 Austria
Run Code Online (Sandbox Code Playgroud)

我想匹配"位置"和输出是这样的:

Name Position Location Match
francesca A 75 1
cristina B 36 0
Run Code Online (Sandbox Code Playgroud)

我尝试过使用该功能match或使用:

subset(df1, location %in% df2)
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

你能帮我弄明白怎么做吗?

r match dataframe

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

ggplot2 按 y 轴的比例对分类堆叠条进行排序

我有一个带有分类 x 轴的数据框,称为类别,y 轴是丰度,按序列着色。对于每个类别,我试图按丰度对堆栈进行重新排序,以便很容易地可视化哪个序列在底部的比例最高,在顶部的比例最低。

目前,我可以制作这样的条形图:

s<-"Sequence Abundance Category
CAGTG 0.8 A
CAGTG 0.2 B
CAGTG 0.6 C
CAGTG 0.3 D
CAGTG 0.1 E
GGGAC 0.1 A
GGGAC 0.1 B
GGGAC 0.3 C
GGGAC 0.6 D
GGGAC 0.1 E
CTTGA 0.1 A
CTTGA 0.7 B
CTTGA 0.1 C
CTTGA 0.1 D
CTTGA 0.8 E"

d<-read.delim(textConnection(s),header=T,sep=" ")

g = ggplot(d,aes(x = Category, y = Abundance, fill = Sequence)) + 
      geom_bar(position = "fill",stat = "identity")
Run Code Online (Sandbox Code Playgroud)

我的数据与此非常相似:Ordering stacks by size in a ggplot2 …

r factors ggplot2 geom-bar

4
推荐指数
1
解决办法
1606
查看次数

替换R中缺失值的平均值或模式

我有一个由混合数据类型(数字,字符,因子,序数因子)组成的大型数据库,缺少值,我试图创建一个for循环,使用相应列的平均值替换缺失值,如果数字或字符/因子的模式.

这就是我现在所拥有的:

#fake array:
age<- c(5,8,10,12,NA)
a <- factor(c("aa", "bb", NA, "cc", "cc"))
b <- c("banana", "apple", "pear", "grape", NA)
df_test <- data.frame(age=age, a=a, b=b)
df_test$b <- as.character(df_test$b)

for (var in 1:ncol(df_test)) {
    if (class(df_test[,var])=="numeric") {
        df_test[is.na(df_test[,var]) <- mean(df_test[,var], na.rm = TRUE)
} else if (class(df_test[,var]=="character") {
        Mode(df_test$var[is.na(df_test$var)], na.rm = TRUE)
} 
}
Run Code Online (Sandbox Code Playgroud)

"模式"的功能是:

Mode <- function (x, na.rm) {
    xtab <- table(x)
    xmode <- names(which(xtab == max(xtab)))
    if (length(xmode) > 1)
        xmode <- ">1 mode"
    return(xmode)
}
Run Code Online (Sandbox Code Playgroud)

它似乎只是忽略了语句,没有给出任何错误......我也尝试用索引来处理第一部分:

## …
Run Code Online (Sandbox Code Playgroud)

r missing-data

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

使用biomaRt查找转录起始位点

biomaRt在R中用来查询ensembl的hsapiens人类基因数据库.我正在使用该函数getBM来获取所有基因的名称,起始位置和停止位置,但我找不到用于检索TSS(转录起始位点)的正确属性.可能是因为它被认为与seqType= c("3utr", "5utr")?相同?

r bioconductor

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

当Z得分很大时(pvalue远低于零),如何计算R中z分数的p值?

在遗传学中,非常小的p值是常见的(例如10 ^ -400),当我在R中得分很大时,我正在寻找一种获得非常小的p值(双尾)的方法,例如:

z=40
pvalue = 2*pnorm(abs(z), lower.tail = F)
Run Code Online (Sandbox Code Playgroud)

这给了我零而不是非常小的值,这是非常重要的.

statistics r normal-distribution genetics

3
推荐指数
1
解决办法
5304
查看次数

在R中表示非常大的数字

我有非常大的值的对数,例如:

log_a = 1347 
log_b = 1351 
Run Code Online (Sandbox Code Playgroud)

我正在尝试解决这个问题:

exp(log_a) - (0.1 * exp(log_b))
Run Code Online (Sandbox Code Playgroud)

或者相当于此(相同的表达式只是以不同的形式):

exp( log_a ) - exp( log(0.1) + log_b ) 
Run Code Online (Sandbox Code Playgroud)

但是当然每当我尝试计算exp(log_a)或exp(log_b)值时,我都会得到Inf.我可以使用任何技巧来获得exp(log_a) - (0.1*exp(log_b))的真实结果,是以对数还是指数形式?

非常感谢你的帮助!

logarithm r exponential

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