小编Sam*_*rke的帖子

在最后一个"."之后删除字符串的最后一部分.在R

想象一下,我们有一个变量名列表,如下所示:

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)

regex r gsub

4
推荐指数
1
解决办法
723
查看次数

将文本读入data.frame,其中字符串值包含空格

当存在包含空间干扰的字符串值时,从打印的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"解释为两个独立的变量.

r read.table

4
推荐指数
1
解决办法
1634
查看次数

使用 stargazer 导出回归表:$ 运算符对原子向量无效

我正在尝试使用 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)

非常感谢!!!

latex regression r stargazer

4
推荐指数
1
解决办法
3182
查看次数

在 R 中使用 KNN (k = 2) 时,对小数据集不断得到不同的预测

考虑以下训练集的回归问题:

在此处输入图片说明

我想预测每个对象的 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)

algorithm r knn

4
推荐指数
1
解决办法
1432
查看次数

R软件包中不赞成使用的功能的单元测试在检查期间引起警告

我已经在我的R包中弃用了几个函数,方法.Deprecated("new_function_name")是在函数的开头添加一行。对于那些不推荐使用的功能,我进行了完整的单元测试。现在,这些试验产生警告(因为过时消息)和泥泞起来的结果testthat::test()devtools::check().

我可以删除不赞成使用的函数的测试范围,但是似乎只要用户仍然可以调用函数,我就应该保留测试范围。有什么方法可以保留测试,但又可以避免结果混乱check()吗?例如,告诉testthat他们如果expect_equal()仍然有效,而忽略弃用警告,就算它们为合格。

r testthat deprecation-warning

4
推荐指数
2
解决办法
178
查看次数

使用重复键进行tidyverse传播,并根据唯一键填充NA

考虑最小的例子:

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)

r dplyr tidyr tidyverse

4
推荐指数
1
解决办法
419
查看次数

将字符串拆分为单个字符串的向量

我有一个像这样的字符串"abcde",希望它分成像这样的向量

> c("a", "b", "c", "d", "e")
[1] "a" "b" "c" "d" "e"
Run Code Online (Sandbox Code Playgroud)

我找到了一种方法,我将作为答案发布,但我希望其他人有一种更简单的方法来做到这一点,无论是在基础 R 中还是使用包。

string r

4
推荐指数
1
解决办法
7845
查看次数

tidyverse:一个变量与 data.frame 中所有其他变量的交叉表

我想制作一个变量与 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)

r crosstab purrr tidyverse janitor

4
推荐指数
1
解决办法
4892
查看次数

阻止 git 跟踪临时打开的 Microsoft Office 文件

Microsoft Office 会复制打开的文件,例如,当您打开abc.xlsxExcel 时,会创建一个名为 的文件~$abc.xlsx,该文件以波形符和美元符号开头。

当我在 git 存储库中打开 Excel 文件来查看数据时,git 会跟踪新文件作为更改,我必须小心避免提交它。如何使用 .gitignore 文件来跳过跟踪这些文件?

git gitignore

4
推荐指数
1
解决办法
460
查看次数

用 curly-curly 改变变量

我已将 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 中的任何列更改为常量?

r dplyr rlang

4
推荐指数
1
解决办法
709
查看次数