我正在尝试if else语句,如果数据框中的三个变量彼此相等,则包含一个条件.
我希望使用相同的功能,但不确定这是否适用于三个变量.
我也使用了以下但R似乎不喜欢这样:
geno$VarMatch <- ifelse((geno[c(1)] != '' & geno[c(2)] != '' & geno[c(3)] != '')
& (geno[c(5)] == geno[c(4)] == geno[c(6)]), 'Not Important', 'Important')
Run Code Online (Sandbox Code Playgroud)
继续告诉我:
Error: unexpected '=='
Run Code Online (Sandbox Code Playgroud)
我应该指定一些东西作为data.frame/vector等......来自SPSS的观点,我有点困惑.
对不起,简单的查询.
我的变量名称格式如下:
PP_Sample_12.GT
Run Code Online (Sandbox Code Playgroud)
或者
PP_Sample-17.GT
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用字符串拆分来 grep 出中间部分: ieSample_12
或Sample-17
. 但是,当我这样做时:
IDtmp <- sapply(strsplit(names(df[c(1:13)]),'_'),function(x) x[2])
IDs <- data.frame(sapply(strsplit(IDtmp,'.GT',fixed=T),function(x) x[1]))
Run Code Online (Sandbox Code Playgroud)
我最终得到的Sample
是PP_Sample_12.GT
。
还有其他方法可以做到这一点吗?也许使用模式/替换类型的函数?不过,不确定 R 中是否存在(但我认为这可能适用gsub
)
我有两个相当长的列表(都是232000行).当尝试使用两者运行分析时,R给出了一个错误,即一个列表中的某些元素不在另一个列表中(对于要运行的特定代码,两个列表都必须完全相同).我已经做了以下尝试和解读这个:
#In Both
both <- varss %in% varsg
length(both)
#What is in Both
int <- intersect(varss,varsg)
length(int)
#What is different in varss
difs <- setdiff(varss,varsg)
length(difs)
#What is different in varsg
difg <- setdiff(varsg,varss)
length(difg)
Run Code Online (Sandbox Code Playgroud)
我认为我的代码是正确的,但我的问题是上面代码的结果并没有产生我需要的东西.例如,因为both <- varss %in% varsg
我只得到一个FALSE
.我的列表是否需要在特定的类中才能使其正常工作?我试过了data.frame
,list
而且character
.不确定是否function
需要应用任何重要的东西.
只是为了提供一些关于我的清单的更多信息,两者都是SNP名称列表(遗传数据)
编辑:
我已经加载了这两个文件readRDS()
,但不确定这是否会导致一些问题.当试图使用varss[1:10,]
我得到以下信息:
[1] rs41531144 rs41323649 exm2263307 rs41528348 exm2216184 rs3901846
[7] exm2216185 exm2216186 exm2216191 exm2216198
232334 Levels: exm1000006 exm1000025 exm1000032 exm1000038 ... rs9990343
Run Code Online (Sandbox Code Playgroud)
我对 …
我正在尝试使用以下内容在ggplot中设置xlim和ylim:
ylim=c(0, 1.5) +
xlim=c(0,100) +
Run Code Online (Sandbox Code Playgroud)
要么
coord_cartesian(xlim = c(0, 100), ylim = (0,1.5)) +
Run Code Online (Sandbox Code Playgroud)
似乎抛出这个错误:
Error in scale_x_discrete(breaks = c(0, 50, 100), labels = c(0, :
non-numeric argument to binary operator
Run Code Online (Sandbox Code Playgroud)
这是因为我正在使用x的离散比例吗?我正在使用数字y.
运用
scale_y_continuous(limits = c(0, 1.5)) +
Run Code Online (Sandbox Code Playgroud)
似乎工作,但给出错误:
Warning message:
Removed 2 rows containing missing values (geom_path).
Run Code Online (Sandbox Code Playgroud)
关于我可以尝试的任何建议?
完整代码:
cfr <- ggplot(sn, aes(x = mmad,y = fr, group=Plan, colour = Plan)) +
geom_line(size=0.5) +
#scale_y_continuous(limits = c(0, 1.5)) +
scale_x_discrete(breaks = c(0,50,100), labels= c(0,50,100)) +
labs(x = "mmad",y …
Run Code Online (Sandbox Code Playgroud) 我环顾四周,但似乎找不到解决方案。我在 ggplot2 中使用了 geom_point 和 geom_hline,并且都得到了令人满意的图例。但是,我在图中有一条黑线和一条蓝线,但在图例中它们都是黑色的 - 我如何在图例中将其更正为正确的颜色?
mcgc <- ggplot(sam, aes(x = Person,y = mm, colour = X)) +
geom_point(size = 0.75) +
scale_colour_gradient2(high="red", mid="green", limits=c(0,1), guide = "colourbar") +
geom_hline(aes(yintercept = mad, linetype = "mad"), colour = "blue", size=0.75, show_guide = TRUE) +
geom_hline(aes(yintercept = mmad, linetype = "mmad"), colour = "black", size=0.75, show_guide = TRUE) +
facet_wrap(~ Plan, scales = "free", ncol = 4) +
scale_linetype_manual(name = "Plan of Health Care", values = c("mad" = 1, "mmad" …
Run Code Online (Sandbox Code Playgroud) 我有一个我想要拆分的变量......每一行都不同但它有两个字符串表达式用","分隔; 3个字符串表达式用','分隔; 1字符串表达式; 或者什么也没有
例如:
indel
row1 +1C
row2 +1C,+2CC
row3 0
row4 +1C,+2CC,-1C
Run Code Online (Sandbox Code Playgroud)
基本上我想要做的是为每个可能的三个字符串表达式创建3个不同的变量.当然,有些行会有2个,或1个或没有.
我已经能够使用以下方法拆分并为前两个字符串表达式创建两个不同的变量:
mito$indel1 <- sapply(strsplit(as.character(mito$indel),","),function(x) x[1])
mito$indel2 <- sapply(strsplit(as.character(mito$indel),","),function(x) x[2])
Run Code Online (Sandbox Code Playgroud)
但当然,还有第三个字符串表达式.我正在考虑创建一个临时的indel2变量,然后再将它拆分成第三个,但使用上面的R脚本的问题是它创建变量为:
indel Indel1 Indel2
row1 +1C +1C NA
row2 +1C,+2CC +1C +2CC
row3 0 0 NA
row4 +1C,+2T,-1C +1C +2T
Run Code Online (Sandbox Code Playgroud)
我确定这与字符串中的第二个","有关,而R正在变得混乱.但有没有办法克服这一点,而无需编辑每一行的整个变量.
我也试过以下没有运气:
mito$indel2 <- sapply(strsplit(sapply(strsplit(as.character(mito$indel),","),function(x) x[2]),","),function(x) x[1])
mito$indel3 <- sapply(strsplit(sapply(strsplit(as.character(mito$indel),","),function(x) x[2]),","),function(x) x[2])
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.
我想循环遍历多个文件并将一个函数应用于它们.问题是这些文件都是不同的,但命名相似的目录.路径模式类似,但数量根据其所属的家庭而变化.
例如,我的代码编写如下:
for(i in 1:numfiles) {
olddata <- read.table(paste("/home/smith/Family", i, "/Family", i, ".txt", sep="\t"),
header=T)
# FUNCTION GOES HERE
write.table(newdata,
paste("/home/smith/Family", i, "/Family", i, "test.txt",
sep = ",", quote=F, row.names=F)
}
Run Code Online (Sandbox Code Playgroud)
我遇到的问题是家庭号码不按数字顺序排列.有些标记只是一个号码(例如:2
)等都有附加到这个数字一个字母(例如:1a
)
在每个族子目录(即Family i)中,我想在同一个文件中调用(文件名完全相同,但数字(i)根据它所引用的族来改变).我想循环这些特定的文件.例如......对于家庭1a,文件在这里:"/ home /smith/Family1a/Family1a.txt"但是对于家庭2,文件在这里:"/ home /smith/Family2/Family2txt".
另外,R不喜欢我的使用numfiles
.