小编ali*_*ire的帖子

如何使用R Markdown显式设置R DT表的列宽?

我有一个包含多个变量的表,其中包含长变量名和长字符串作为多个观察值.如何显式设置每个列宽,因此通过R Markdown呈现为HTML的表不会自动将行加倍以使长字符串适合单元格?

即使表格无法同时显示所有列,我也可以使用足够长的列.但是,我总是可以使用'FixedColumns'扩展名和滚动条向右移动以获得更多列.

我目前用于设置列宽的代码是:

options = list(
    autowidth = TRUE,
    columnDefs = list(list(width = '600px', targets = c(1, 2))),
Run Code Online (Sandbox Code Playgroud)

但无论我如何设置不同的宽度,最终渲染的表格看起来都有太大的不同.

以下是我在rmarkdown中使用的一些可重复生成的代码,包括在HTML中生成模拟数据和DT对象.

```{r}
# generate data
vec_1 <- c("DHDH, DDDDDTV", 
       "DHDH, DDDDDTV, TT&T",
       "DHDH, DDDDDTV, TT&T, Caaater",
       "DHDH, DDDDDTV, TT&T, Caaater, Cxx",
       "DHDH, DDDDDTV, TT&T, Cxx",
       "DHDH, DDDDDTV, Caaater",           
       "DHDH, DDDDDTV, Caaater, Cxx",
       "DHDH, DDDDDTV, Cxx")

vec_2 <- c("Some radomn long string aaa bbb ccc dddd aaa bbb ccccccc", 
       "Some radomn long stringa",
       "Some string aaa bbb",
       "Some radomn long string …
Run Code Online (Sandbox Code Playgroud)

r knitr r-markdown dt

12
推荐指数
1
解决办法
2190
查看次数

这是预期的行为吗?

我很抱歉,如果这是一个模糊的问题,因为我是R的新手.在尝试RI时发现了一个奇怪的行为.当我创建一个像这样的函数:

myfunction <- function(a,b){
    print(a,b)
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

myfunction(b = 10, a = 20)
Run Code Online (Sandbox Code Playgroud)

它返回结果20,但如果我只是通过直接将它分配给变量来调用它而不是函数:

a <- 20
b <- 10
print(a, b)
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

Error in print.default(a, b) : invalid 'digits' argument
Run Code Online (Sandbox Code Playgroud)

此外,我已经读过,可以通过以下方式在同一行中打印多个变量:

sprintf("%i %i",a, b)
Run Code Online (Sandbox Code Playgroud)

所以这是一个错误,它出现在函数调用中,结果作为第一个参数?

r

11
推荐指数
1
解决办法
7050
查看次数

gt表中多列的条件格式化

这是我的第一篇文章,如果我搞砸了一些事情,我深表歉意。我正在尝试将条件格式应用于 gt 表的多个列(将示例 SampA、SampB 和 SampB 的结果与 Limit 进行比较)。在其中一个gt 示例和不同的堆栈溢出 Q的引导下,我成功地使用以下代码将其应用于单个列(变量):

## Conditional Formatting of single column in gt table

samples = as_tibble(cbind("Chem"=c("Cd","Pb","Zn"),
                       "Limit"=c("0.005","0.05","0.007"),
                       "SampA" = c("0.001","0.15","0.003"),
                       "SampB" = c("0.002","0.04","0.005"),
                       "SampC" = c("0.009","0.23","0.03")))

gt(samples,rowname_col="Chem") %>% tab_style(
        style = list(
                cell_fill(color = "grey80"),
                cell_text(weight = "bold")
        ),
        locations = cells_body(
                columns = vars(SampA),
                rows = SampA >= Limit
        )
    )   %>% tab_spanner(
            label = "Samples",
            columns = vars(SampA,SampB,SampC))
Run Code Online (Sandbox Code Playgroud)

单列成功的条件格式

但是,我没有成功地尝试将其扩展到多个列。我可以让“列”参数与“vars(SampA,SampB,SampC)”一起使用。将“行”参数保留为“SampA >= Limit”,格式设置“有效”,即 SampA >= Limit 的所有行在三个 Samp 列中突出显示,但这不是我想要的。运行下面的代码最终不会对任何列进行格式化。 …

r gt

11
推荐指数
1
解决办法
4792
查看次数

如何合并和求和两个数据帧

这是我的问题:

df1 <- data.frame(x = 1:5, y = 2:6, z = 3:7)
rownames(df1) <- LETTERS[1:5]
df1
  x y z
A 1 2 3
B 2 3 4
C 3 4 5
D 4 5 6
E 5 6 7

df2 <- data.frame(x = 1:5, y = 2:6, z = 3:7)
rownames(df2) <- LETTERS[3:7]
df2
  x y z
C 1 2 3
D 2 3 4
E 3 4 5
F 4 5 6
G 5 6 7
Run Code Online (Sandbox Code Playgroud)

我想要的是:

  x y …
Run Code Online (Sandbox Code Playgroud)

r

10
推荐指数
2
解决办法
9140
查看次数

为glm使用modelr :: add_predictions

我试图使用tidyverse和modelr包计算一组数据的逻辑回归预测.显然我做错了,add_predictions因为我没有收到后勤功能的"响应",就像我在统计数据中使用'预测'功能一样.这应该很简单,但我无法弄清楚,多次搜索产生的结果很少.

library(tidyverse)
library(modelr)
options(na.action = na.warn)
library(ISLR)

d <- as_tibble(ISLR::Default)
model <- glm(default ~ balance, data = d, family = binomial)
grid <- d %>% data_grid(balance) %>% add_predictions(model)

ggplot(d, aes(x=balance)) + 
    geom_point(aes(y = default)) + 
    geom_line(data = grid, aes(y = pred))
Run Code Online (Sandbox Code Playgroud)

r glm tidyverse modelr

9
推荐指数
1
解决办法
1495
查看次数

在dplyr中,setdiff和anti_join之间的内在差异是什么?

我还在为DataCamp for R上课,所以如果这个问题看起来很天真,请原谅我.

考虑以下(非常人为的)样本:

library(dplyr)
library(tibble)

type <- c("Dog", "Cat", "Cat", "Cat")
name <- c("Ella", "Arrow", "Gabby", "Eddie")
pets = tibble(name, type)

name <- c("Ella", "Arrow", "Dog")
type <- c("Dog", "Cat", "Calvin")
favorites = tibble(name, type)

anti_join(favorites, pets, by = "name")
setdiff(favorites, pets, by = "name")
Run Code Online (Sandbox Code Playgroud)

这两个都返回完全相同的数据:

> anti_join(favorites, pets, by = "name")
# A tibble: 1 × 2
   name   type
  <chr>  <chr>
1   Dog Calvin

> setdiff(favorites, pets, by = "name")
# A tibble: 1 × 2 …
Run Code Online (Sandbox Code Playgroud)

r dplyr

9
推荐指数
1
解决办法
3228
查看次数

从R中的字符串中删除表情符号

我有一个推文列表,其中许多包含需要删除的表情符号.在R中这样做最有效的方法是什么?

我尝试了以下方法,它应该用"空白"替换以"\"开头的所有单词,但是我收到此错误

some_tweets <- gsub("\\\w+ *", "", some_tweets)
Error: '\w' is an unrecognized escape in character string starting ""\\\w"
Run Code Online (Sandbox Code Playgroud)

以下是数据示例:

> head(some_tweets)
[1] "??? ???? ??????? ????? \U0001f625\U0001f625\U0001f625"                               
[2] "?????? ?????????? \U0001f913\U0001f913\U0001f913"                                  
[3] "???? ????? ?????? ??????? \U0001f602\U0001f602\U0001f602\U0001f602"                        
[4] "???"                                                                           
[5] "RT : ?????????? ??????.. ~ ?????"                                                      
[6] "?????? ??????? ???? ??????????? ????????? ????????? ??????? ????????? \U0001f608\U0001f608\U0001f608"


> dput(head(some_tweets))
c("??? ???? ??????? ????? \U0001f625\U0001f625\U0001f625", 
"?????? ?????????? \U0001f913\U0001f913\U0001f913", 
"???? ????? ?????? ??????? \U0001f602\U0001f602\U0001f602\U0001f602", 
"???", "RT : ?????????? ??????.. ~ ?????", 
"?????? …
Run Code Online (Sandbox Code Playgroud)

regex unicode twitter r substitution

8
推荐指数
1
解决办法
3046
查看次数

geosphere distHaversine()&dplyr - 向量错误长度错误,应为2

我无法解决错误:"当向量计算两个点(跑道入口/终点)之间的(跑道长度)距离"时,"向量的长度应该为2".更糟糕的是,我无法理解像这里的答案R错误:向量的长度错误,应为2并将它们应用于我的案例.(跑道末端)位置的简化数据框如下所示:

runways <-  data.frame(
 RWY_ID = c(1,2,3)
,RWY    = c("36R", "36L","01")
,LAT    = c(40.08, 40.12, 40.06)
,LON    = c(116.59, 116.57, 116.62)
,LAT2   = c(40.05, 40.07,40.09)
,LON2   = c(116.6, 116.57, 116.61)
)
Run Code Online (Sandbox Code Playgroud)

使用geosphere的distHaversine()函数,我尝试计算距离:

runways <- mutate(runways
                 , CTD = distHaversine( c(LON, LAT), c(LON2, LAT2))
                 )
Run Code Online (Sandbox Code Playgroud)

我不确定我在这里做错了什么.如果我拉出LON LAT位置,它是一个具有正确长度的数字向量.

myv <- c(runways$LON[1], runways$LAT[1])
myv

[1] 116.59  40.08
str(myv)
num [1:2] 116.6 40.1
Run Code Online (Sandbox Code Playgroud)

r dplyr geosphere

8
推荐指数
1
解决办法
4075
查看次数

如何使用quosures将命名向量传递给dplyr :: select?

使用旧select_()函数,我可以将命名向量传递给select并立即更改位置和列名:

my_data  <- data_frame(foo = 0:10, bar = 10:20, meh = 20:30)
my_newnames  <-  c("newbar" = "bar", "newfoo" = "foo")

move_stuff  <- function(df, newnames) {
    select_(df, .dots = newnames)
}

move_stuff(my_data,  newnames = my_newnames) )

# this is the desired output
# A tibble: 4 x 2
  newbar  newfoo
   <int>   <int>
1     10       0
2     11       1
3     12       2
4     13       3
Run Code Online (Sandbox Code Playgroud)

我尝试使用quosures和拼接做类似的事情 - 选择列效果很好,但是矢量的名称(因此同时重命名列)似乎被忽略了.以下两个都返回数据框,列中包含名称barfoo,但不是newbarnewfoo:

move_stuff2  <- function(df, newnames) …
Run Code Online (Sandbox Code Playgroud)

r dplyr nse rlang

8
推荐指数
1
解决办法
1175
查看次数

访问函数内函数中的变量

在R中运行函数时,我在其中运行另一个函数.我有一个代码:

f_a <- function(b, c){
    return(b + c)
}

f_e <- function(){
    b = 2
    c = 2 
    d = f_a(b, c)
    print(d)
}
Run Code Online (Sandbox Code Playgroud)

这很好用.我想做的是不将变量传递 b, c给函数f_a.我想做这样的事情(抛出错误)

f_a <- function(){
    return(b + c)
}

f_e <- function(){
    b = 2
    c = 2
    d = f_a()
    print(d)
}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用环境或搜索路径或任何其他方式?

r function parameter-passing

8
推荐指数
1
解决办法
2819
查看次数