我希望这个问题提清楚!我已经看过很多关于循环和if\u else子句等的指南,但还没有找到答案。
我试图在一大组txt文件中找到出现大量(比如说5个)关键字的段落。示例关键字为“运动”和“原因”。我的数据是整齐的(txt文件已被拆分,因此每行有一个单词),我使用正则表达式添加了列(每个关键字一个),如果行包含关键字,则显示“TRUE”,否则为false。现在为了找到感兴趣的段落,我想在同一行中复制每一列,并且在这些行的上面和下面的250行中显示“TRUE”。例如,当行包含单词“motion”时,我想复制表示“TRUE”的列,这样在新列中,围绕单词“motion”的500个单词也为“TRUE”(即,单词所在行上下各250行)。这样我就可以很容易地检查是否有任何行中所有复制的列都是真的,这表明有一个500字的段落中出现了我的所有关键字。
我曾尝试学习并以各种方式使用循环来制作这些复制的列,但到目前为止,我还没有取得任何成功。这就是我最近的尝试,但它似乎只是将相同的行指定为“TRUE”250次,而不是将接下来的250行指定为“TRUE”。(它还发出错误消息“Problem with'mutate()'input'copied\u column”。subscript out of bound i input'copied\u column'是'case\u when(…)'。”)
n <-1
corpus <- corpus #>#
mutate(copied_column = case_when(
str_detect(original_column, "TRUE") ~ (repeat{
n <- n+1
str_detect(orginal_column, "FALSE")
if (n == 250) {
break
}
})
))
如果任何人有任何建议,他们将是最受欢迎的。如果你知道我可能应该使用的任何功能,或者如果你知道如何正确使用上面例子中的功能,那将对我有很大帮助。
也许下面的函数可以解决这个问题。用假数据测试。
segmentTRUE <- function(X, y, dist){
f <- function(y, n, d){
from <- max(1, y - d)
to <- min(n, y + d)
from:to
}
y <- deparse(substitute(y))
w <- which(X[[y]])
i <- Reduce(union, mapply(f, w, MoreArgs = list(n = nrow(X), d = dist)))
X[i, y] <- TRUE
X[[y]]
}
生成一些数据并以3种不同的方式运行函数,其中两种方式在magrittr管道中。
x <- rep(FALSE, 5e1)
x[c(2, 10, 35, 47)] <- TRUE
df1 <- data.frame(words = rep(letters, length.out = 5e1), x)
head(df1)
d <- 5
segmentTRUE(df1, x, d)
df1 %>% segmentTRUE(x, d)
df1 %>% mutate(x = segmentTRUE(., x, d))
当nrow(df1)==1e4时,以下函数比Reduce版本快几个数量级。
segmentTRUE2 <- function(X, y, dist){
f <- function(y, n, d){
max(1, y - d):min(n, y + d)
}
y <- deparse(substitute(y))
w <- which(X[[y]])
i <- unique(unlist(mapply(f, w, MoreArgs = list(n = nrow(X), d = dist))))
X[i, y] <- TRUE
X[[y]]
}
identical(segmentTRUE(df1, x, d), segmentTRUE2(df1, x, d))
#[1] TRUE
问题内容: 抱歉,是否曾经有人问过这个问题,但是我徒劳地寻找我 确切 问题的答案。基本上,对于Python 2.7,我有一个程序运行一系列地理处理工具,具体取决于用户在脚本中调整的一系列True / False变量所要求的内容,例如 但是,我现在发现x不必在字面上是“ True”即可运行该函数。例如: 因此,除False以外的任何值似乎都将评估为True,如果 x == True 或 x为True
日志说:
我有一个数据帧,其中包含这样的重复行, 0 乔 十二月 2017 1 詹姆斯 一月 2018 2 鲍勃四月 2018 3 杰克三月 2018 4 乔十二月 2017 5 杰克三月 2018 在使用df[df.duplicated(keep=False)]之后,我得到了如下输出: 0 Joe December 2017 3 Jack 2018 4 Joe Decision 2017 5 Jack 2
我想从文本文件中获取以下格式: 要将其转换为没有第一行和最后一行的数据帧,我跳过了第一行和最后一行,但随后我变成了一行和onw列中的其余文本如何排列这些行?我还有一个数据框架的模式
我们在桌面应用程序中大量使用flexbox,比如寻找网络应用程序,它一直运行良好。 但是在最新的火狐开发者版(35.0a2)中,布局并不像预期的那样(它会超出视口):http://tinyurl.com/k6a8jde 这在Firefox33.1中运行良好。 我认为这与此处描述的flexbox更改有关:https://developer.mozilla.org/en-US/Firefox/Rele
问题内容: 我将一些代码从一个文件的一部分复制到vim的另一部分,发现每行都有行号,格式不见了,如何将正确的格式设置为原点? 像这样: 问题答案: 如果您有行号,我可以肯定您没有使用Vim的yank / put操作(这些操作将 永远不会 复制行号,foldcolumn,图标等),因为就编辑缓冲区而言,它们不存在。 我的猜测是您正在终端仿真器中工作,并使用鼠标将内容复制到剪贴板,剪贴板可能会选择屏幕