想象一下,我们有一个变量名列表,如下所示:
ls<-c("apple.mean", "orange.mean", "orange.sd", "apple.pie.mean", "orange.juice.n", "orange.juice.p%")
Run Code Online (Sandbox Code Playgroud)
我们如何删除每个元素中的最后一部分(在"."之后),以便我们得到:
"apple" "orange" "orange" "apple.pie" "orange.juice" "orange.juice"
Run Code Online (Sandbox Code Playgroud)
请注意,可能有"." 在名称内,但我不希望这些单词被拆分.
我试图使用,gsub("\\..*$", "",ls)
但它在第一个点之后省略了所有内容.我不确定为什么$符号在这里不起作用.有任何想法吗?
> gsub("\\..*$", "",ls)
[1] "apple" "orange" "orange" "apple" "orange" "orange"
Run Code Online (Sandbox Code Playgroud) 当存在包含空间干扰的字符串值时,从打印的data.frame读取文本到data.frame的最简单方法是read.table
什么?例如,此data.frame摘录不会造成问题:
candname party elecVotes
1 BarackObama D 365
2 JohnMcCain R 173
Run Code Online (Sandbox Code Playgroud)
我可以将它粘贴到一个read.table
没有问题的电话中:
dat <- read.table(text = " candname party elecVotes
1 BarackObama D 365
2 JohnMcCain R 173", header = TRUE)
Run Code Online (Sandbox Code Playgroud)
但是如果数据包含带有这样的空格的字符串:
candname party elecVotes
1 Barack Obama D 365
2 John McCain R 173
Run Code Online (Sandbox Code Playgroud)
然后read.table
抛出一个错误,因为它将"Barack"和"Obama"解释为两个独立的变量.
我正在尝试使用 stargazer 导出回归表。回归输出来自 glm,看起来像:
Call:
glm(formula = formula, family = binomial(logit), data = data)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.2913 -0.11888 -0.3239 -0.3216 2.6627
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.4839244 0.2439274 -14.283 < 2e-16 ***
data$var 0.00144 0.003666 0.021 0.2724
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法控制该回归的变量名称。当我尝试运行 stargazer 以在 tex 中导出表时,出现错误
$ 运算符对原子向量无效
我该怎么办?我尝试使用 stargazer 更改变量的标签,但这不起作用。
stargazer(glm_output,
title = "results",
covariate.labels = c("newname"),
dep.var.caption = "caption",
dep.var.labels = "dep",
rownames = FALSE)
Run Code Online (Sandbox Code Playgroud)
非常感谢!!!
考虑以下训练集的回归问题:
我想预测每个对象的 2-最近邻预测 - 但是,每次调用 knn 函数时,我都会得到不同的预测。应该是这样吗?这是我正在使用的代码:
library(class)
test <- train <- matrix(c(-1, 0, 2, 3),,1)
cl <- c(0, 1, 2, 1)
knn(train, test, cl, k=2)
Run Code Online (Sandbox Code Playgroud)
输出:
> knn(train, test, cl, k=2)
[1] 1 1 2 2
Levels: 0 1 2
> knn(train, test, cl, k=2)
[1] 0 0 1 2
Levels: 0 1 2
> knn(train, test, cl, k=2)
[1] 1 1 1 2
Levels: 0 1 2
> knn(train, test, cl, k=2)
[1] 0 0 1 2
Levels: …
Run Code Online (Sandbox Code Playgroud) 我已经在我的R包中弃用了几个函数,方法.Deprecated("new_function_name")
是在函数的开头添加一行。对于那些不推荐使用的功能,我进行了完整的单元测试。现在,这些试验产生警告(因为过时消息)和泥泞起来的结果testthat::test()
和devtools::check().
我可以删除不赞成使用的函数的测试范围,但是似乎只要用户仍然可以调用函数,我就应该保留测试范围。有什么方法可以保留测试,但又可以避免结果混乱check()
吗?例如,告诉testthat
他们如果expect_equal()
仍然有效,而忽略弃用警告,就算它们为合格。
考虑最小的例子:
library(tidyverse)
ex <-tribble(
~id, ~property, ~value,
1, "A", 9,
1, "A", 8,
1, "B", 7,
2, "A", 6,
2, "B", 5
)
Run Code Online (Sandbox Code Playgroud)
我的目标是将属性扩展到列中以获取此表:
tribble(
~id, ~A, ~B,
1, 9, 7,
1, 8, 7,
2, 6, 5
)
Run Code Online (Sandbox Code Playgroud)
按id
和分组property
并添加密钥会关闭,但会留下NA:
## almost but not quite
ex %>%
group_by(id, property) %>%
mutate(key = row_number()) %>%
spread(property, value) %>%
select(-key) -> X
X
Run Code Online (Sandbox Code Playgroud)
得到:
id A B
1 1 9 7
2 1 8 NA
3 2 6 5 …
Run Code Online (Sandbox Code Playgroud) 我有一个像这样的字符串"abcde"
,希望它分成像这样的向量
> c("a", "b", "c", "d", "e")
[1] "a" "b" "c" "d" "e"
Run Code Online (Sandbox Code Playgroud)
我找到了一种方法,我将作为答案发布,但我希望其他人有一种更简单的方法来做到这一点,无论是在基础 R 中还是使用包。
我想制作一个变量与 data.frame 中所有其他变量的交叉表。
library(tidyverse)
library(janitor)
humans <- starwars %>%
filter(species == "Human")
humans %>%
janitor::tabyl(gender, eye_color)
gender blue blue-gray brown dark hazel yellow
female 3 0 5 0 1 0
male 9 1 12 1 1 2
humans %>%
dplyr::select_if(is.character) %>%
dplyr::select(-name, -gender) %>%
purrr::map(.f = ~janitor::tabyl(dat = humans, gender, .x))
Error: Unknown columns `blond`, `none`, `brown`, `brown, grey`, `brown` and ...
Call `rlang::last_error()` to see a backtrace
Run Code Online (Sandbox Code Playgroud) Microsoft Office 会复制打开的文件,例如,当您打开abc.xlsx
Excel 时,会创建一个名为 的文件~$abc.xlsx
,该文件以波形符和美元符号开头。
当我在 git 存储库中打开 Excel 文件来查看数据时,git 会跟踪新文件作为更改,我必须小心避免提交它。如何使用 .gitignore 文件来跳过跟踪这些文件?
我已将 curly-curly 与group_by
和 一起使用,如rlang 公告summarise
中所述。但是当我改变一个变量时我无法让它工作。目前使用 dplyr 执行此操作的最佳方法是什么?
假设我想提供一个不带引号的列名并对其进行变异,这是一个不起作用的玩具示例函数:
my_fun <- function(dat, var_name){
dat %>%
mutate({{var_name}} = 1)
}
my_fun(mtcars, cyl)
Run Code Online (Sandbox Code Playgroud)
该mutate
行应该是什么才能将 mtcars 中的任何列更改为常量?