小编Tho*_*ing的帖子

选择此类向量元素,使元素之和恰好等于指定值

我有一个随机正整数向量。我只想选择向量中那些总和恰好等于某个预定值的元素。

让我们举一个这样的例子。 x=1:5,我正在寻找总和等于 的元素14。解当然是向量c(2, 3, 4, 5)

当然,可能有多种解决方案。示例 2. x=1:5,我正在寻找总和等于 的元素7。这里当然应该有以下三种解决方案:
1. c(2, 5)
2. c(3, 4)
3 c(1, 2, 4)..

也可能存在根本没有解决办法的情况。示例 3. x=c(1, 2, 7),我正在寻找总和等于 的元素5。当然,这里没有正确的解决方案。

如果我们有多个元素的向量,一切看起来都非常简单。在这里,我什至想出了一些替代解决方案。然而,当向量的大小增加时,问题就出现了。

我的向量看起来像这样:

x= c(236L, 407L, 51L, 308L, 72L, 9787L, 458L, 5486L, 42L, 4290L,
  31L, 3533L, 1102L, 24L, 100L, 669L, 9352L, 4091L, 2751L, 3324L,
  3193L, 245L, 86L, 98932L, 77L, 13L, 9789L, 91L, 999L, 25L, 25379L,
  9626L, 9092L, 622L, 97L, 57L, …
Run Code Online (Sandbox Code Playgroud)

algorithm performance r vector

26
推荐指数
4
解决办法
1379
查看次数

高效的递归随机采样

想象一下以下格式的 df:

   ID1 ID2
1    A   1
2    A   2
3    A   3
4    A   4
5    A   5
6    B   1
7    B   2
8    B   3
9    B   4
10   B   5
11   C   1
12   C   2
13   C   3
14   C   4
15   C   5
Run Code Online (Sandbox Code Playgroud)

问题是为 ID1 中的第一个唯一值随机选择一行(最好调整为 n 行),从数据集中删除相应的 ID2 值,从剩余的 ID2 值池中随机选择一个值作为第二个 ID1 值(即递归),等等。

因此,例如,对于第一个 ID1 值,它将执行sample(1:5, 1),结果为 2。对于第二个 ID1 值,它将执行sample(c(1, 3:5), 1),结果为 3。对于第三个 ID1 值,它将执行sample(c(1, 4:5), 1),结果为 …

random algorithm recursion performance r

24
推荐指数
3
解决办法
970
查看次数

如何按字符拆分字符串而不忽略尾随拆分字符?

我有一个类似于以下内容的字符串

my_string <- "apple,banana,orange,"
Run Code Online (Sandbox Code Playgroud)

我想分割,以产生输出:

list(c('apple', 'banana', 'orange', ""))
Run Code Online (Sandbox Code Playgroud)

我认为 strsplit 可以实现这一点,但它对待尾随的 ',' 就像它不存在一样

my_string <- "apple,banana,orange,"
Run Code Online (Sandbox Code Playgroud)

由reprex 包(v2.0.1)于 2023 年 11 月 15 日创建

实现所需输出的最简单方法是什么?

更多带有示例字符串和所需输出的测试用例

string1 = "apple,banana,orange,"
output1 = list(c('apple', 'banana', 'orange', ''))

string2 =  "apple,banana,orange,pear"
output2 = list(c('apple', 'banana', 'orange', 'pear'))

string3 =  ",apple,banana,orange"
output3 = list(c('', 'apple', 'banana', 'orange'))

## Examples of non-comma separated strings
# '|' separator
string4 =  "|apple|banana|orange|"
output4 = list(c('', 'apple', 'banana', 'orange', ''))

# 'x' separator
string5 …
Run Code Online (Sandbox Code Playgroud)

regex string r

19
推荐指数
3
解决办法
1007
查看次数

如何用一组值替换 NA

我有以下数据框:

library(dplyr)
library(tibble)


df <- tibble(
  source = c("a", "b", "c", "d", "e"),
  score = c(10, 5, NA, 3, NA ) ) 


df
Run Code Online (Sandbox Code Playgroud)

它看起来像这样:

# A tibble: 5 x 2
  source score
  <chr>  <dbl>
1 a         10 . # current max value
2 b          5
3 c         NA
4 d          3
5 e         NA
Run Code Online (Sandbox Code Playgroud)

我想要做的是NA用现有的值范围替换分数列max + n。其中n范围从 1 到总行数df

导致这个(手工编码):

  source score
  a         10
  b          5
  c         11 # obtained from 10 + …
Run Code Online (Sandbox Code Playgroud)

replace if-statement r dplyr tibble

17
推荐指数
3
解决办法
675
查看次数

按组高效过滤多列

假设数据集每个 ID 包含多行,多列包含一些存储为字符串的代码:

df <- data.frame(id = rep(1:3, each = 2),
                 var1 = c("X1", "Y1", "Y2", "Y3", "Z1", "Z2"),
                 var2 = c("Y1", "X2", "Y2", "Y3", "Z1", "Z2"),
                 var3 = c("Y1", "Y2", "X1", "Y3", "Z1", "Z2"),
                 stringsAsFactors = FALSE)

  id var1 var2 var3
1  1   X1   Y1   Y1
2  1   Y1   X2   Y2
3  2   Y2   Y2   X1
4  2   Y3   Y3   Y3
5  3   Z1   Z1   Z1
6  3   Z2   Z2   Z2
Run Code Online (Sandbox Code Playgroud)

现在,假设我想过滤掉X在任何相关列中具有特定代码(此处)的所有 ID 。使用dplyrand purrr …

regex performance filtering r dataframe

15
推荐指数
5
解决办法
558
查看次数

如何有效地将对划分为簇,以便每个簇包含给定集合的所有条目

假设我们有一组v偶数基数,例如 ,v <- 1:6和一个由 的df条目组成的data.frame v,它是由每列中每个元素的固定出现次数定义的v,即k,例如

k <- 2
x <- rep(v, each = k)
df <- data.frame(A = x, B = c(tail(x, -(k + 1)), head(x, k + 1)))
Run Code Online (Sandbox Code Playgroud)

显示为

> df
   A B
1  1 2
2  1 3
3  2 3
4  2 4
5  3 4
6  3 5
7  4 5
8  4 6
9  5 6
10 5 1
11 6 1
12 …
Run Code Online (Sandbox Code Playgroud)

algorithm performance grouping r

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

在 R 中查找所有可能的团队

感觉这应该很简单,但我已经经历过堆栈溢出和combn帮助,但看不到解决方案。

下面的玩家需要组成 3 对 2 的队伍。我需要找到所有可能的队伍组合。例如,两个可能的团队是“Ross”、“Bobby”和“Casper”在一个团队中,“Max”和“Jake”在另一团队中。我该如何编码?

players <- c("Ross", "Bobby", "Max", "Casper", "Jake")
Run Code Online (Sandbox Code Playgroud)

r combinatorics combn

14
推荐指数
3
解决办法
1074
查看次数

将一个非空的 data.frame 与一个空的合并时的奇怪行为

我有一个非空数据框 df1

df1 <- structure(list(V1 = 1:4, V2 = 5:8), class = "data.frame", row.names = c(NA, 
-4L))

> df1
  V1 V2
1  1  5
2  2  6
3  3  7
4  4  8
Run Code Online (Sandbox Code Playgroud)

和两个空的数据帧df2.adf2.b,即

df2.a <- structure(list(V1 = integer(0), V2 = integer(0), V3 = integer(0), V4 = integer(0)), row.names = integer(0), class = "data.frame")


df2.b <- structure(list(V1 = NULL, V2 = NULL, V3 = NULL, V4 = NULL), row.names = c(NA, 0L), class = "data.frame")
Run Code Online (Sandbox Code Playgroud)

where …

merge r dataframe

13
推荐指数
2
解决办法
764
查看次数

如何使用条件如果在R中更改矩阵条目

我有这个示例矩阵,我想使用"YES""NO"基于条件if语句更改矩阵的条目。

a<-c(5,1,0,3,2,0.6,1.6,7,9,0)
b<-c(11,0,1,18,11,11,0,13,20,10)
c<-c(10,20,0.7,0.8,0.3,0.4,0,0.9,1,1)

MAT<-cbind(a,b,c)
MAT

for (i in 1:nrow(MAT)){
  for (j in 1:ncol(MAT)){
  if (MAT[i,j]>5){
    MAT[i,j]="YES"
    } else {
    MAT[i,j]="NO"
    }
  }
}
print(MAT)
Run Code Online (Sandbox Code Playgroud)

我得到的输出是这样的,它是错误的。请帮助告诉我出了什么问题以及如何解决?

      a     b    c   
[1,] "NO"  "NO" "NO"
[2,] "NO"  "NO" "NO"
[3,] "NO"  "NO" "NO"
[4,] "NO"  "NO" "NO"
[5,] "NO"  "NO" "NO"
[6,] "NO"  "NO" "NO"
[7,] "NO"  "NO" "NO"
[8,] "YES" "NO" "NO"
[9,] "YES" "NO" "NO"
[10,] "NO"  "NO" "NO"
Run Code Online (Sandbox Code Playgroud)

if-statement r matrix conditional-statements multiple-entries

13
推荐指数
3
解决办法
1207
查看次数

使用重新编码,使用命名向量的命名列表跨多个列进行变异

我找不到与我在这里遇到的问题类似的问题。我有一个非常大的命名向量列表,与数据框中的列名称匹配。我想使用命名向量列表来替换数据帧列中与每个列表元素名称匹配的值。也就是说,列表中向量的名称与数据帧列的名称匹配,每个向量元素中的键值对将用于重新编码该列。

代表如下:

library(tidyverse)

# Starting tibble
test <- tibble(Names = c("Alice","Bob","Cindy"),
               A = c(3,"q",7),
               B = c(1,2,"b"),
               C = c("a","g",9))

# Named vector
A <- c("5" = "alpha", "7" = "bravo", "3" = "charlie", "q" = "delta")
B <- c("1" = "yes", "2" = "no", "b" = "bad", "c" = "missing")
C <- c("9" = "beta", "8" = "gamma", "a" = "delta", "g" = "epsilon")

# Named list of named vectors
dicts <- list("A" = A, "B" = B, "C" …
Run Code Online (Sandbox Code Playgroud)

r recode

13
推荐指数
2
解决办法
2026
查看次数