假设你有一个像这样的for循环
for(n in 1:5) {
#if(n=3) # skip 3rd iteration and go to next iteration
cat(n)
}
Run Code Online (Sandbox Code Playgroud)
如果满足某个条件,如何跳到下一次迭代?
我正在尝试列出目录中的所有文件,包括以子目录结尾的目录_input.txt.
- folder 1
- a_input.txt
- folder 2
- b_input.txt
Run Code Online (Sandbox Code Playgroud)
如果文件夹1是我的工作目录,我希望list.files(pattern = "\\_input.txt$")能够检测到a_input.txt和b_input.txt
假设我有这个向量
x <- c("165 239 210", "111 45 93")
Run Code Online (Sandbox Code Playgroud)
是否有一个整洁的包将RGB值转换为R中的十六进制值?我发现了许多javascript方式,但没有一个用于R.
x <- "#A5EFD2" "#6F2D5D"
Run Code Online (Sandbox Code Playgroud) 我有一个如下所示的数据框D:
Track <- c(0,0,0,-1,1,1)
Length <- c(1,1,2,1,3,1)
Legend <- c("A","B","A","C","B","C")
D <- data.frame(Track,Length,Legend)
D
# Track Length Legend
# 0 1 A
# 0 1 B
# 0 2 A
# -1 1 C
# 1 3 B
# 1 1 C
Run Code Online (Sandbox Code Playgroud)
我目前正在使用此代码绘制它:
ggplot(Z, aes(x=Track, y=Length, fill=Legend)) +
geom_bar(stat='identity') + geom_point() + expand_limits(x=0,y=0) +
theme(panel.grid.major = element_blank(), panel.grid.minor = element_blank(),
panel.background = element_blank(), axis.line = element_line(colour = "black"))
Run Code Online (Sandbox Code Playgroud)
图表看起来像这样:

但是我想将颜色白色分配给变量B.这种操作是否可行?另外,为了简单起见,我在这篇文章中使用虚拟数据.我将使用的实际数据可能在Legend下有10个或更多不同的变量,因此写出每个十六进制颜色看起来不像一个干净的选项.
感谢您的帮助
我正在尝试gregexpr在一个大字符串中搜索"ABCD"的位置,并在同一个字符串中搜索"ABBD,ACCD,AAAD".我想将"ABCD"搜索结果和"ABBD,ACCD,AAAD"搜索结果输出到数据表的两个单独列中.
我目前的方法是单独使用gregexpr,将每个导出为1列txt文件,将每个导出为矩阵,对每个1列矩阵进行排序,使数字逐行增加,列绑定两个矩阵,并将得到的两个列矩阵转换为数据表.
在处理非常大的字符串时,这种方法似乎非常低效,并且需要很长时间才能完成.有没有办法优化程序?谢谢你的帮助!
# dummy string that is relatively short for this demo
x <- "ABCDACCDABBDABCDAAADACCDABBDABCD"
# SEARCH for 'ABCD' location
out1 <- gregexpr(pattern = "ABCD", x)
cat(paste(c(out1[[1]]), sep = "\n", collapse = "\n"), file = "~/out_1.txt")
# SEARCH for 'A??D' location
outB <- gregexpr(pattern = "ABBD", x)
outC <- gregexpr(pattern = "ACCD", x)
outA <- gregexpr(pattern = "AAAD", x)
cat(paste(c(outA[[1]], outB[[1]], outC[[1]]), collapse = "\n"), file = "~/out_2.txt")
# Function that BINDS Matrices by column
cbind.fill <- function(...){
nm …Run Code Online (Sandbox Code Playgroud) 我试图在两列矩阵中操纵列数据并将其作为data.frame输出.
我所拥有的矩阵采用这种格式,其中起始列和结束列中的值都在增加且不重叠.此外,始终条目总是比结束条目多.
假设我从这个矩阵开始:
# Start End
# [1,] 1 6
# [2,] 2 9
# [3,] 3 15
# [4,] 7 NA
# [5,] 8 NA
# [6,] 11 NA
# [7,] 12 NA
# [8,] 14 NA
Run Code Online (Sandbox Code Playgroud)
我希望这个double for循环输出一个data.frame,它将所有Start值分组为小于End值并将其与该End值相关联.
为了澄清我想输出这个:
# Start End
# 1 1,2,3 6
# 2 7,8 9
# 3 11,12,14 15
Run Code Online (Sandbox Code Playgroud)
我尝试了一个双循环,但我需要更快的东西,因为我想在更大的矩阵~5 MB上使用此方法.
start_end <- matrix(c(1, 6, 2, 9, 3, 15, 7, NA, 8, NA, 11, NA, 12, NA, 14, NA),
nrow=8,
ncol=2)
# of …Run Code Online (Sandbox Code Playgroud) 我在x中搜索4个不同子串的位置,并尝试将这四个输出合并为一个累积字符串:
x <- ("AAABBADSJALKACCWIEUADD")
outputA <- gregexpr(pattern = "AAA", x)
outputB <- gregexpr(pattern = "ABB", x)
outputC <- gregexpr(pattern = "ACC", x)
outputD <- gregexpr(pattern = "ADD", x)
Run Code Online (Sandbox Code Playgroud)
我想合并这四个输出,并将此合并结果作为文本文件输出,每个元素在新行上分隔.
merged_output
# 1
# 3
# 13
# 20
Run Code Online (Sandbox Code Playgroud)
谢谢
我有一个由3列组成的数据表,分配给变量g.
g
# V1 V2 V3
# [1,] 1 Yes 3
# [2,] 4 No 6
# [3,] 7 No 9
# ...
Run Code Online (Sandbox Code Playgroud)
我正在尝试通过检查g [,2]中的值是"是"还是"否"来创建列表m,然后将一些字符串粘贴到m中.
m <- for(i in 1:nrow(g)){
if(g[i,2]=='No'){
paste0("ABC", g[i,1], "DEF", g[i,2], "GHI", g[i,3],"\n")
} else if(g[i,2]=='Yes'){
paste0("GHI", g[i,1], "DEF", g[i,2], "ABC", g[i,3],"\n")
} else {NULL}
}
m
# NULL
Run Code Online (Sandbox Code Playgroud)
但是当我尝试返回m时,它只返回NULL.我希望我看起来像这样:
m
# ABC1DEFYesGHI3
# GHI2DEFNoABC9
Run Code Online (Sandbox Code Playgroud)
谁能指出我在这里做错了什么?非常感谢你!
假设您要将第二个字符串匹配替换为向量替换中的第二个元素.例如:
x <- "CBCADEFGHI"
pattern <- "(A|D|C)"
replacement <- c("X","Y","Z")
Run Code Online (Sandbox Code Playgroud)
您将如何仅替换第二个模式匹配,即"C",因为它是第二个发现的模式,具有相应的替换向量元素"Z"?
期望的输出:
"CBZADEFGHI"
Run Code Online (Sandbox Code Playgroud) 假设我有一个数字向量,有一些数字是顺序的,有些则不是:
x <- c(1,2,3,5,6,7,8,11,14,16,17)
Run Code Online (Sandbox Code Playgroud)
我将如何操纵这个以便返回一个字符串,使序列组合在一起?
y <- "1-3, 5-8, 11, 14, 16-17"
Run Code Online (Sandbox Code Playgroud)