我正在努力熟悉终端的基础知识。我想在我的 CMS 网站中找到包含我的 Google Analytics 跟踪代码“gaq”作为搜索字符串的文件应该可以解决问题。
我的桌面上有一个文件夹,其中包含所有站点文件。
/用户/我的名字/桌面/网站
我打开终端并尝试
grep gaq /Users/myname/Desktop/website
grep gaq * /Users/myname/Desktop/website
Run Code Online (Sandbox Code Playgroud)
我在 SO 和 Google 上搜索过,但互联网似乎挤满了涉及正则表达式和条件的 grep 稍微更高级的用法。
例如: 列出包含字符串但 *NOT* 包含另一个字符串的文件的 Unix 命令,如何使用 grep 在文件夹中查找单词?.
我以为我已经在第二个示例问题中找到了答案。我尝试了以下命令:grep -nr gaq* /Users/myname/Desktop/website
但这返回了许多结果,据我所知,我的搜索字符串并不完全准确匹配。
这是通过查看 html 页面源获取的 Google Analytics 代码段示例。我的目标是找到生成分析代码段的文件,以便将其更新到较新版本的 Google Analytics:
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-xxxxxxxx-1']);
_gaq.push(['_trackPageview']);
Run Code Online (Sandbox Code Playgroud)
所以我使用“gaq”作为搜索字符串。
我意识到这听起来一定很基本,但作为 shell 的初学者,这很令人沮丧。
我将如何使用 grep 在目录 /Users/myname/Desktop/website 中搜索包含分析代码的文件(返回文件而不是实际的文本段落)(假设 grep 是我应该使用的命令?)
我一直在做一项任务,我必须从一个目录"specdata"中读取一些csv文件.这些文件非常相似,共有332个标题为001.csv - 332.csv.如果重要的话,它们具有一致的列和标题.
我相信我很接近,但我正在绊倒上面的错误信息
"
[.data.frame(data1,good)中的错误:选择了未定义的列"
我原本期望一个数据框加载id参数中的文件子集指定的所有数据.
pollutantmean <- function(directory, pollutant, id = 1:332) {
files <- list.files(directory)
subsetFiles <- files[id]
for (i in subsetFiles) {
filepaths <- paste(directory,"/",i, sep='')
data1 <- read.csv(filepaths)
}
data1
good <- complete.cases(data1)
data2 <- data1[good]
data2
}
# test it out and ignore middle parameter for now
pollutantmean("specdata", "pass", 1:3)
Run Code Online (Sandbox Code Playgroud) 以下命令
document.querySelectorAll('#divConfirm table')[1].querySelectorAll('tr')
给出一个包含3个tablerow(tr)元素的节点列表.如果我知道列表大小,我可以访问最后一个元素.item(2).
有没有办法直接获得最后一个元素而不先诉诸.length?
我已经阅读了这些关于让 rstudio 打印而不截断的帖子:
列表输出被截断 - 如何在 R 中使用 str() 扩展列出的变量
答案涉及对工作室设置进行调整,然后覆盖控制台的所有未来输出。
有没有一种特殊的方法可以让 r 将整个字符串打印到控制台?
我试过:
library(tidyverse)
library(foreach)
mystring <- foreach(i = 1:52) %do% {
paste0("'_gaWeek",i,"'!A16:B;")
} %>% unlist %>% toString()
print(mystring, len = length(mystring))
> print(mystring, len = length(mystring))
[1] "'_gaWeek1'!A16:B;, '_gaWeek2'!A16:B;, '_gaWeek3'!A16:B;, '_gaWeek4'!A16:B;, '_gaWeek5'!A16:B;, '_gaWeek6'!A16:B;, '_gaWeek7'!A16:B;, '_gaWeek8'!A16:B;, '_gaWeek9'!A16:B;, '_gaWeek10'!A16:B;, '_gaWeek11'!A16:B;, '_gaWeek12'!A16:B;, '_gaWeek13'!A16:B;, '_gaWeek14'!A16:B;, '_gaWeek15'!A16:B;, '_gaWeek16'!A16:B;, '_gaWeek17'!A16:B;, '_gaWeek18'!A16:B;, '_gaWeek19'!A16:B;, '_gaWeek20'!A16:B;, '_gaWeek21'!A16:B;, '_gaWeek22'!A16:B;, '_gaWeek23'!A16:B;, '_gaWeek24'!A16:B;, '_gaWeek25'!A16:B;, '_gaWeek26'!A16:B;, '_gaWeek27'!A16:B;, '_gaWeek28'!A16:B;, '_gaWeek29'!A16:B;, '_gaWeek30'!A16:B;, '_gaWeek31'!A16:B;, '_gaWeek32'!A16:B;, '_gaWeek33'!A16:B;, '_gaWeek34'!A16:B;, '_gaWeek35'!A16:B;, '_gaWeek36'!A16:B;, '_gaWeek37'!A16:B;, …Run Code Online (Sandbox Code Playgroud) 我想同时在oner和supress suppressPackageStartupMessages中加载包.
第一个链接中的答案使用了lapply:
packages <- c("tidyverse", "qdap", "stringr", "stringi", "textstem", "foreach", "caret", "xgboost", "quanteda")
lapply(packages, require, character.only = T)
Run Code Online (Sandbox Code Playgroud)
这会向控制台返回一个难看的列表:
[[1]]
[1] TRUE
[[2]]
[1] TRUE
[[3]]
[1] TRUE
[[4]]
[1] TRUE
Run Code Online (Sandbox Code Playgroud)
另外,我还想摆脱那些在加载时发送到控制台的消息,例如
> library(tidyverse)
Loading tidyverse: ggplot2
Loading tidyverse: dplyr
Conflicts with tidy packages --------------------------------------------------------------------
accumulate(): purrr, foreach
filter(): dplyr, stats
lag(): dplyr, stats
when(): purrr, foreach
Run Code Online (Sandbox Code Playgroud)
是否有一个聪明,简短的方法来加载包的向量和suppressPackageStartupMessages?
自从开始使用Google跟踪代码管理器以来,我一直在尝试为分析提供一些Javascript.目前,我想跟踪退出链接并使用以下自定义html代码段:
<script type="text/javascript">
$(document).ready(function(){
$('.app-cta a').onClick=_gaq.push(['_trackEvent', 'App', 'Click', 'iOS']);
});
</script>
Run Code Online (Sandbox Code Playgroud)
解雇规则是:
{{event}} equals GAevent
Run Code Online (Sandbox Code Playgroud)
然后我尝试了一个射击规则:
{{url}} matches RegEx .*
Run Code Online (Sandbox Code Playgroud)
没运气.Google Analytics和HTTPfox都没有提取任何内容.
我仍然专注于Google跟踪代码管理器.
谁能看到我在这里做错了什么?
我写了一个小函数:
function weeklyCurrency(e) {
var changed_cell = e.range.getA1Notation();
Logger.log(changed_cell);
}
Run Code Online (Sandbox Code Playgroud)
然后将其设置为可安装的 onEdit 触发器:
Resources > current projects triggers > weeklyCurreency > onEdit
Run Code Online (Sandbox Code Playgroud)
已保存
转到工作表并在单元格中键入任何值,然后返回编辑器并单击View > Logs:
未找到用户日志。请运行您的脚本并重试。
我希望看到例如“ A15”。
为什么每次编辑时都看不到任何东西?
我还尝试通过将函数名称更改为onEdit()相同的内容来使用简单的触发器函数;没有结果。
我在 df 中有一个功能,其中一些缺失值仅显示为“”。
unique(page_my_df$Type)
[1] "list" "narrative" "how to" "news feature"
[5] "diary" "" "interview"
Run Code Online (Sandbox Code Playgroud)
我想用“未知”替换“”的所有实例。
page_my_df <- page_my_df %>%
mutate(Type = str_replace(.$Type, "", "unknown"),
Voice = str_replace(.$Voice, "", "unknown"))
Run Code Online (Sandbox Code Playgroud)
mutate_impl(.data, dots) 中的错误:评估错误:未实现。
在这里阅读一些文档,特别是在模式下:
使用boundary() 匹配字符、单词、行和句子边界。空模式 "" 等效于边界(“字符”)。
所以我试过:
page_my_df <- page_my_df %>%
mutate(Type = str_replace(.$Type, boundary(""), "unknown"),
Voice = str_replace(.$Voice, boundary(""), "unknown"))
Run Code Online (Sandbox Code Playgroud)
然后给出:
mutate_impl(.data, dots) 中的错误:评估错误:“arg”应该是“character”、“line_break”、“sentence”、“word”之一。
如何在 dplyr::mutate() 中用“unknown”替换空字符串?
我意识到这个问题之前已经被问过,但没有点击。真的没有占位符吗?
例子:
my_mtcars <- mtcars %>% mutate(bla = c(1:nrow(.)))
my_mtcars$bla[10] <- NA
my_mtcars$bla[15] <- NA
Run Code Online (Sandbox Code Playgroud)
作品:
# magritr pipe to return NA rows while debugging a df
my_mtcars %>% filter(!complete.cases(.)) %>% glimpse
Run Code Online (Sandbox Code Playgroud)
不起作用:
# native piple equivilent
my_mtcars |> filter(!complete.cases(.)) |> glimpse()
Run Code Online (Sandbox Code Playgroud)
我尝试使用本机管道执行的操作的“正确”方法是什么?
例如,我想删除字段mpg,选择carb,使其成为第一个,然后是现有顺序中剩余的所有内容。
mtcars |> select_at(vars(-mpg, carb, everything()))
Run Code Online (Sandbox Code Playgroud)
这似乎会根据需要降低 mpg,但 carb 不在前面位置/第一个变量。
我打电话的select_at()目的是用英语读“下降英里数,然后首先选择碳水化合物,然后选择其他一切”。
在 ?vars 的文档中,它说要使用 across。我对其中任何一种都持开放态度,但如果可能的话,我更喜欢单衬,而不是例如select(-mpg) |> select_at(vars(carb, everything()))