作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个小标题,每行有一个单词列表。我想从一个搜索关键字的函数中创建一个新变量,如果找到该关键字,则创建一个由关键字正负3个单词组成的字符串。
下面的代码很接近,但是与其捕获我的关键字前后的所有三个单词,不如捕获,而是捕获了单词3的前后。
df <- tibble(words = c("it", "was", "the", "best", "of", "times",
"it", "was", "the", "worst", "of", "times"))
df <- df %>% mutate(chunks = ifelse(words=="times",
paste(lag(words, 3),
words,
lead(words, 3), sep = " "),
NA))
lag
函数是否可以执行以下操作:lead(words, 1:3)
,但不起作用。paste(lead(words,3), lead(words,2), lead(words,1),...lag(words,3)
),但是我最终实际上希望能够获取50个上下左右的关键字,以至于无法手工编码。最佳答案
一种选择是sapply
:
library(dplyr)
df %>%
mutate(
chunks = ifelse(
words == "times",
sapply(
1:nrow(.),
function(x) paste(words[pmax(1, x - 3):pmin(x + 3, nrow(.))], collapse = " ")
),
NA
)
)
# A tibble: 12 x 2
words chunks
<chr> <chr>
1 it NA
2 was NA
3 the NA
4 best NA
5 of NA
6 times the best of times it was the
7 it NA
8 was NA
9 the NA
10 worst NA
11 of NA
12 times the worst of times
lead
或
lag
函数,但通常也可以达到目的。
关于r - 超前或滞后函数可获取多个值,而不仅仅是第n个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55010810/
我是一名优秀的程序员,十分优秀!