我有一个随机正整数向量。我只想选择向量中那些总和恰好等于某个预定值的元素。
让我们举一个这样的例子。
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) 想象一下以下格式的 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),结果为 …
我有一个类似于以下内容的字符串
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) 我有以下数据框:
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) 假设数据集每个 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 …
假设我们有一组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) 感觉这应该很简单,但我已经经历过堆栈溢出和combn帮助,但看不到解决方案。
下面的玩家需要组成 3 对 2 的队伍。我需要找到所有可能的队伍组合。例如,两个可能的团队是“Ross”、“Bobby”和“Casper”在一个团队中,“Max”和“Jake”在另一团队中。我该如何编码?
players <- c("Ross", "Bobby", "Max", "Casper", "Jake")
Run Code Online (Sandbox Code Playgroud) 我有一个非空数据框 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.a和df2.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 …
我有这个示例矩阵,我想使用"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
我找不到与我在这里遇到的问题类似的问题。我有一个非常大的命名向量列表,与数据框中的列名称匹配。我想使用命名向量列表来替换数据帧列中与每个列表元素名称匹配的值。也就是说,列表中向量的名称与数据帧列的名称匹配,每个向量元素中的键值对将用于重新编码该列。
代表如下:
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)