有列表ori_list,如何组合子数据框cat_a|cat_btocat和item_a|item_bto item?(结果与 new_list 相同)
cat_a <- data.frame(name=c('A','B','C'),amount=c(1,2,3))
cat_b <- data.frame(name=c('w','B','C'),amount=c(4,2,3))
item_a <- data.frame(name=c('z','o','C'),amount=c(3,4,1))
item_b <- data.frame(name=c('n','B','C'),amount=c(6,6,3))
files <- ls(pattern = 'cat|item') %>% purrr::set_names()
ori_list <- list(mget(files))
new_list <- list(cat= data.frame(name = c('A','B','C','w','B','C'),
amount = c(1,2,3,4,2,3)),
item = data.frame(name=c('z','o','C','n','B','C'),
amount=c(3,4,1,6,6,3)))
Run Code Online (Sandbox Code Playgroud) 我正在尝试探索正则表达式捕获由连续重复的字符分组的子字符串并将其替换为相反的子字符串的能力,但仅使用gsub.
例如,给定一个字符串s <- "abxxxyyyyzzpqr","xxxyyyyzz"应捕获 where 并依次替换为"zzyyyyxxx"。我想我们可能需要两个步骤:
"xxxyyyyzz"("x"、"y"、"z"不断重复)?xxxyyyyzz反转以便我们最终获得一个新字符串"abzzyyyyxxxpqr"?由于我对正则表达式的了解有限,我不确定是否可以独自gsub完成这项任务。如果可能的话,我们将不胜感激地了解如何实施它。
我正在寻找通用的正则表达式,而不是特定的字符:
"xxabcyyyzzpqr"-> "xxabczzyyypqr","yyyzz"目标应该在哪里"xaaab,,,@@@&&"-> "xaaab&&@@@,,,",",,,@@@&&"目标应该在哪里"xxaaab,,,@@@&&"-> "aaaxxb&&@@@,,,",其中"xxaaa"和 都",,,@@@&&"应该是目标我有一个由出现在不同文本中的单词组成的数据框。
word text
1 a 1
2 a 2
3 a 5
4 b 1
5 b 3
6 c 1
7 c 3
8 c 4
9 d 4
10 e 2
11 e 4
12 f 3
13 g 2
14 h 5
15 i 5
Run Code Online (Sandbox Code Playgroud)
我希望每个单词都有一个输出,如下所示:
a
[1] 1 2 5
b
[1] 1 3
...
Run Code Online (Sandbox Code Playgroud)
有没有什么方法可以同时检索每个单词的所有文本,而不必每次我想查找特定单词的文本时都键入“a”或“b”?非常感谢!
我有一个列表,我想删除具有奇数长度的元素:
my_list <- list()
my_list$a <- c(1,2,3,4) #length 4
my_list$b <- c(1,2,3) # length 3
my_list$c <- c(5,6,7,8,6,7) #length 6
Run Code Online (Sandbox Code Playgroud)
所以在上面的例子中,我想删除, my_list$b 因为它的长度是3,而3是奇数。
有什么建议么?
对于 R,假设我有以下字符向量:
input_vector <- c("123abc", "456efg", "hij789", "lmn000")
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一个现有的函数,例如myfunc(),可以输出我的向量后面的正则表达式模式。换句话说:
myfunc(input_vector)
> [1] "[:digit:]{3}[:alpha:]{3}" "[:digit:]{3}[:alpha:]{3}" "[:alpha:]{3}[:digit:]{3}"
[4] "[:alpha:]{3}[:digit:]{3}"
Run Code Online (Sandbox Code Playgroud)
[编辑]:在@Allan Cameron的第一个回复之后,我补充说,我的最终目标是检测[:digit:]-[:alpha:]在任意长的字符向量中发现的所有可能的模式,我知道它的元素理论上仅嵌入[:digit:]或[:alpha:]仅包含字符(这是一个简化,但这是一个解决方案)问题已经足够了)。说:
input_vector2 <- 1000L
input_vector2 <- c("123abc", "456efg", ..., "zz6ab8") # this line is illustrative, just imagine a 1000L character vector
Run Code Online (Sandbox Code Playgroud)
如果可能的话,我真正想要的是一个返回以下元素的 [:digit:]-[:alpha:] 结构的函数input_vector2:
myfunc(input_vector2)
> [1] "[:digit:]{3}[:alpha:]{3}" # (or any way to tell there is three consecutive [:digit:] then three consecutive [:alpha:])
[2] "[:digit:]{3}[:alpha:]{3}"
...
[1000] "[:alpha:]{2}[:digit:][:alpha:]{2}[:digit:]"
Run Code Online (Sandbox Code Playgroud)
在所有情况下都表示感谢!
丹尼尔
我尝试搜索现有的堆栈溢出相关主题,但找不到解决方案,也找不到解决方案的提示。 …
tb例如,我有一张桌子
tb <- table(mtcars[c("carb","cyl")])
> tb
cyl
carb 4 6 8
1 5 2 0
2 6 0 4
3 0 0 3
4 0 4 6
6 0 1 0
8 0 0 1
Run Code Online (Sandbox Code Playgroud)
在哪里
> class(tb)
[1] "table"
Run Code Online (Sandbox Code Playgroud)
我想知道是否有一种更直接的方法可以tb从 a转换table为matrix,即,
mtb <- as.matrix(as.data.frame.matrix(tb))
Run Code Online (Sandbox Code Playgroud)
以至于
> mtb
4 6 8
1 5 2 0
2 6 0 4
3 0 0 3
4 0 4 6
6 0 1 0
8 0 …Run Code Online (Sandbox Code Playgroud) 我有一个像这样的数据框,带有 ID 和两个条件:
df <- data.frame(ID=c("A", "A", "A", "B", "C"), cond1=c("yes", "yes", "no", "no", "yes"), cond2=c("no", "no", "yes", "yes", "yes"))
df
ID cond1 cond2
1 A yes no
2 A yes no
3 A no yes
4 B no yes
5 C yes yes
Run Code Online (Sandbox Code Playgroud)
我想过滤适用 cond1 和 cond2 的 ID(=是),但它不必在同一行中为真。这意味着我想过滤掉 ID A 和 C,而不是 B。
我尝试使用 dplyr 对 group_by() 和 filter() 进行分组:
df %>%
group_by(PID)%>%
filter(cond1==yes&cond2==yes)
Run Code Online (Sandbox Code Playgroud)
但这只会过滤出一个 PID/行,其中 cond 1 和 cond 2 都适用(所以只有 ID C/行 5)。
我可以做些什么来按组过滤 PID/行,其中有两个条件,在一组中 t0 …
我以以下data.table为例
df = data.table(id = c(1, 2, 3), val=c("['hello', 'world']", "['hi']", "['so', 'there']"))
Run Code Online (Sandbox Code Playgroud)
我想将像对象一样的列表拆分为id重复的单独行。所以data.table我想要的预期如下
df2 = data.table(id = c(1, 1, 2, 3, 3), val=c("hello", "world", "hi", "so", "there"))
Run Code Online (Sandbox Code Playgroud)
我尝试了以下
df[, c("test") := tstrsplit(val, ",", fixed=TRUE)]
Run Code Online (Sandbox Code Playgroud)
但是,我收到以下错误
误差在
[.data.table(DF,:=(C( “测试”),tstrsplit(VAL, “”,固定= TRUE))):提供的2项被分配给3个项目栏'测试'的。如果您希望“回收” RHS,请使用 rep() 向您的代码读者明确说明这一意图。
有人可以指出我在这里做错了什么吗?提前致谢。
我正在为我的学位做一些任务,并陷入了对多变量函数进行成像的问题。下列的:
fb<-function(x) {5*x[1]^2+2*x[1]*x[2]+4*x[2]^2+4*x[1]-2*x[2]-2}
> x<--50:50
> y<--50:50
> z<-outer(x,y,fb)
Error in FUN(X, Y, ...) : unused argument (Y)
Run Code Online (Sandbox Code Playgroud)
更重要的是,我需要找到一个具有最大点的最佳值,但是当我尝试不使用向量时,它会给出下一个:
optim(c(0,0), fb, control=list(fnscale=-5))
Error in fn(par, ...) : argument "y" is missing, with no default
Run Code Online (Sandbox Code Playgroud)
请指教。