小编Sav*_*SUS的帖子

为什么不建议在R中使用attach(),我应该使用什么呢?

我们假设我们有一个x包含列job和的数据框income.引用帧中的数据通常需要列中x$job数据的命令job和列x$income中的数据income.

但是,使用该命令attach(x)允许$在引用相同数据时取消数据帧的名称和符号.因此,x$job变得jobx$income成为income在R代码.

问题是R中的许多专家建议在R中attach()编码时不要使用该命令.

主要原因是什么?应该用什么呢?

r dataframe r-faq

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

如何计算R中文本中的句子数?

我使用该readChar()函数将文本读入R中.我的目的是检验这样一个假设,即文本的句子出现的字母"a"与字母"b"的出现次数一样多.我最近发现了这个{stringr}软件包,这对我的文本做了很多有用的事情,比如计算字符数和整个文本中每个字母的出现次数.现在,我需要知道整篇文章中的句子数量.R有任何功能,可以帮我做到吗?非常感谢你!

r text-mining

7
推荐指数
2
解决办法
5412
查看次数

查找向量中NA值的索引

我有以下向量:

x <- c(3, 7, NA, 4, 8)
Run Code Online (Sandbox Code Playgroud)

而我只是想知道NA向量中的索引.例如,如果我想知道索引7,则以下代码将起作用:

> which(x == 7)
[1] 2
Run Code Online (Sandbox Code Playgroud)

我觉得奇怪的是,在尝试查找索引时运行相同的代码NA并没有给我想要的结果.

> which(x == NA)
integer(0)
Run Code Online (Sandbox Code Playgroud)

我也试过以下但它不起作用:

>  which(x == "NA")
integer(0)
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助.

编辑

@ccapizzano已在下面回答了这个问题,但有人可以解释为什么上面的代码不起作用吗?

r vector na

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

在 Rmarkdown 中的参考书目之后添加数字和表格

我想在 R Markdown 文档中的参考书目之后添加表格和数字。但是,默认情况下,R Markdown 文档将始终将参考书目添加到报告的末尾。

有没有一种简单的方法可以在引用后向文档添加内容?

尝试的解决方案

一个以前的答案表明,就是把附录中的R在降价后书目的方式。此附录是一个单独的文件,并after_body通过 YAML 标头添加到文档中。我尝试了 2 种不同的可能解决方案,但都没有奏效。

  1. 我试图将我的附录放在不同的文件中,但我遇到了在主文件中丢失引用的问题,因为所有附录都在论文正文中交叉引用。所有参考文献都转向?? 一旦我将它们放在不同的文件中。
  2. 我将所有图形和表格放在不同的文件中,同时将它们保存在主文件中。然后,我曾经results = "hide"将它们隐藏在主文件中。这个想法是创建 2 个单独的 PDF 并合并它们。不幸的是,当数字被隐藏时,参考也变成了?? .

附加信息

  • 我正在使用输出格式 bookdown:pdf_document2
  • 我的数字是由一个.R文件创建的,并使用include_graphics().

r cross-reference r-markdown bookdown

7
推荐指数
1
解决办法
2675
查看次数

行方式操作,选择助手和dplyr中的mutate函数

我将使用以下数据集来说明我的问题:

my_df <- data.frame(
    a = 1:10,
    b = 10:1
)
colnames(my_df) <- c("a", "b")
Run Code Online (Sandbox Code Playgroud)

第1部分

我使用该mutate()函数在我的数据集中创建两个新变量,我想计算同一mutate()调用中两个新列的行方式.但是,我真的希望能够使用select()帮助器,如starts_with(),ends_with()contains().

我的第一次尝试:

 my_df %>%
    mutate(
        a_2 = a^2,
        b_2 = b^2,
        mean = rowMeans(select(ends_with("2")))
    )
Error in mutate_impl(.data, dots) : 
  Evaluation error: No tidyselect variables were registered.
Run Code Online (Sandbox Code Playgroud)

我理解为什么会出现错误 - select()函数没有给出任何.data参数.所以我改变了代码......

...我.select()函数内添加" "的第二次尝试:

my_df %>%
    mutate(
        a_2 = a^2,
        b_2 = b^2,
        mean = rowMeans(select(., ends_with("2"))) …
Run Code Online (Sandbox Code Playgroud)

select r dplyr mutate rowwise

6
推荐指数
1
解决办法
523
查看次数

如何从循环和if语句创建二进制变量

假设我有一个x包含0到2之间的20个值的向量.

x = runif(20, 0, 2)
Run Code Online (Sandbox Code Playgroud)

现在,我想y在以下条件下创建另一个仅包含0和1的向量(二进制变量):y = 0if x < 1y = 1in case x > 1.

我尝试用循环和if语句以下列方式执行此操作:

x = runif(20, 0, 2) # Create a vector of 20 values between 0 and 2
y = rep(5, 20) # Create a vector of 20 values (only 5's)

for(i in 1:length(x)) # Loop that assigns values to the y vector depending on x
{
  if(x < 1)
  { …
Run Code Online (Sandbox Code Playgroud)

for-loop if-statement r

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

如何使用带有多个输入的函数的apply()?

我有一个10 x 5的数据帧和一个接收2个输入a和的功能b.

a是一个向量,b是一个整数.

该函数fun计算向量的平均值a并将其乘以b并返回结果.在下面的代码中,我尝试apply()将此函数用于每一列,x但它似乎不起作用.请帮忙!

x = data.frame(rnorm(10), rnorm(10), rnorm(10), rnorm(10), rnorm(10))

fun = function(a, b)
{
  c = mean(a) * b
  return(c)
}

apply(x, 2, fun(x,2))
Run Code Online (Sandbox Code Playgroud)

r function apply

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

列表中的嵌套lapply()?

我有一个列表l,它具有以下功能:

  • 它有3个元素
  • 每个元素都是长度为5的数字向量
  • 每个向量包含1到5的数字

l = list(a = c(2, 3, 1, 5, 1), b = c(4, 3, 3, 5, 2), c = c(5, 1, 3, 2, 4))
Run Code Online (Sandbox Code Playgroud)

我想做两件事:

第一

我想知道每个数字在整个列表中出现的次数,我希望每个结果都是一个向量(或任何可以让我以后用结果执行计算的形式):

代码1:

> a <- table(sapply(l, "["))
> x <- as.data.frame(a)
> x

  Var1   Freq
1    1   3
2    2   3
3    3   4
4    4   2
5    5   3
Run Code Online (Sandbox Code Playgroud)

无论如何都不使用该table()功能.我想"手动"做到这一点.我试着在下面做.

代码2 :(我知道这不是很有效!)

x <- data.frame(
"1" <- sum(sapply(l, "[")) == 1
"2" <- sum(sapply(l, "[")) == …
Run Code Online (Sandbox Code Playgroud)

r function lapply

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

在数据框中嵌套几组列

将多个列嵌套到单个列表列中的概念非常强大。但是,我不确定是否可以使用中的nest功能将多个列嵌套在同一管道内的多个列表列中{tidyr}。例如,假设我具有以下数据框:

df <- as.data.frame(replicate(6, runif(10) * 100))

colnames(df) <- c(
    paste0("a", 1:2), # a1, a2
    paste0("b", 1:4) # b1, b2, b3, b4
)

df
          a1        a2        b1       b2        b3        b4
1  20.807348 69.339482 91.837151 99.76813  3.394350 33.780049
2  64.667733 20.676381 80.523369 38.42774 85.635208 60.111491
3  55.352501 55.699571  4.812923 38.65333 98.869203 80.345576
4  45.194094 16.511696 83.834651 51.48698  7.191081 16.697210
5  66.401642 89.041055 26.965636 67.90061 90.622428 59.552935
6  35.750100 55.997766 49.768556 68.45900 67.523080 58.993232
7  21.392823  5.335281 56.348328 …
Run Code Online (Sandbox Code Playgroud)

r tidyr tidyverse

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

在 spatstat 中使用 sf 多边形对象作为窗口

你好所有潜在的帮助者,

我有一个SpatialPolygonDataFrametigris包中获得的对象,我想在创建ppp对象时将其用作多边形窗口。这是我尝试过的:

# Needed packages
library(spatstat)
library(sf)

# Download geospatial data for Lee county in Alabama (home of the great Auburn University by the way!)
county <- tigris::county_subdivisions(state = "Alabama", county = "Lee")

# The polygon of Lee county is subdivided, so I convert it to a single polygon after converting it to an sf object
county_sf <- st_as_sf(county)
county_one <- st_union(county_sf)

# A quick plot of the object outputs what I am expecting …
Run Code Online (Sandbox Code Playgroud)

r geospatial spatstat r-sf

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