小编alk*_*lki的帖子

R for循环跳转到下一次迭代ifelse

假设你有一个像这样的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)

如果满足某个条件,如何跳到下一次迭代?

for-loop r

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

list.files()目录和子目录中的所有文件

我正在尝试列出目录中的所有文件,包括以子目录结尾的目录_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.txtb_input.txt

r

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

RGB到十六进制转换器

假设我有这个向量

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)

r

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

R ggplot在堆积条形图中更改一个变量的颜色

我有一个如下所示的数据框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个或更多不同的变量,因此写出每个十六进制颜色看起来不像一个干净的选项.

感谢您的帮助

r ggplot2

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

R更快的gregexpr非常大的字符串

我正在尝试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)

regex r matrix data.table

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

R优化双循环,矩阵操作

我试图在两列矩阵中操纵列数据并将其作为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)

r matrix dataframe

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

R将4个字符串合并为1个字符串

我在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)

谢谢

regex r

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

R for循环中的if if语句

我有一个由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)

谁能指出我在这里做错了什么?非常感谢你!

r

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

R正则表达式 - 替换第n个匹配

假设您要将第二个字符串匹配替换为向量替换中的第二个元素.例如:

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)

regex r

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

R:检测序列

假设我有一个数字向量,有一些数字是顺序的,有些则不是:

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)

r

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

标签 统计

r ×10

regex ×3

matrix ×2

data.table ×1

dataframe ×1

for-loop ×1

ggplot2 ×1