我有一个包含多个变量的表,其中包含长变量名和长字符串作为多个观察值.如何显式设置每个列宽,因此通过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的新手.在尝试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)
我收到一个错误:
Run Code Online (Sandbox Code Playgroud)Error in print.default(a, b) : invalid 'digits' argument
此外,我已经读过,可以通过以下方式在同一行中打印多个变量:
sprintf("%i %i",a, b)
Run Code Online (Sandbox Code Playgroud)
所以这是一个错误,它出现在函数调用中,结果作为第一个参数?
这是我的第一篇文章,如果我搞砸了一些事情,我深表歉意。我正在尝试将条件格式应用于 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 列中突出显示,但这不是我想要的。运行下面的代码最终不会对任何列进行格式化。 …
这是我的问题:
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) 我试图使用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) 我还在为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中这样做最有效的方法是什么?
我尝试了以下方法,它应该用"空白"替换以"\"开头的所有单词,但是我收到此错误
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) 我无法解决错误:"当向量计算两个点(跑道入口/终点)之间的(跑道长度)距离"时,"向量的长度应该为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) 使用旧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和拼接做类似的事情 - 选择列效果很好,但是矢量的名称(因此同时重命名列)似乎被忽略了.以下两个都返回数据框,列中包含名称bar和foo,但不是newbar和newfoo:
move_stuff2 <- function(df, newnames) …Run Code Online (Sandbox Code Playgroud) 在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)
有没有办法使用环境或搜索路径或任何其他方式?