我试图用来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场比赛,这是不是真的,任何建议?
我试图找到一种方法来折叠具有相交范围的行,用"开始"和"停止"列表示,并将折叠值记录到新列中.例如,我有这个数据框:
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)
但我不认为这是对的.
任何帮助将非常感激.
我有一个组合的几个(可变)字母的列表,例如:
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",所以必须有更有效的方法来执行此操作?非常感谢!!
我花了很多时间试图在一个情节中拟合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) 我有很多.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) 我试图找到一个函数来匹配一个公共列上不同长度的两个数据帧,并创建一个不同的列,指定它是否找到匹配.所以,例如,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)
但它不起作用.
你能帮我弄明白怎么做吗?
我有一个带有分类 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 …
我有一个由混合数据类型(数字,字符,因子,序数因子)组成的大型数据库,缺少值,我试图创建一个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) 我biomaRt
在R中用来查询ensembl的hsapiens
人类基因数据库.我正在使用该函数getBM
来获取所有基因的名称,起始位置和停止位置,但我找不到用于检索TSS(转录起始位点)的正确属性.可能是因为它被认为与seqType= c("3utr", "5utr")
?相同?
在遗传学中,非常小的p值是常见的(例如10 ^ -400),当我在R中得分很大时,我正在寻找一种获得非常小的p值(双尾)的方法,例如:
z=40
pvalue = 2*pnorm(abs(z), lower.tail = F)
Run Code Online (Sandbox Code Playgroud)
这给了我零而不是非常小的值,这是非常重要的.
我有非常大的值的对数,例如:
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))的真实结果,是以对数还是指数形式?
非常感谢你的帮助!
r ×11
ggplot2 ×2
arrays ×1
binary ×1
bioconductor ×1
combinations ×1
dataframe ×1
exponential ×1
factors ×1
genetics ×1
geom-bar ×1
gridextra ×1
logarithm ×1
loops ×1
match ×1
missing-data ×1
overlap ×1
regex ×1
statistics ×1
storage ×1