请帮我
1)为什么map_if在列表中不起作用
2)是否有使其工作的方法
3)如果不可行,还有哪些选择
提前致谢。
library(dplyr)
library(purrr)
cyl <- split(mtcars, mtcars$cyl)
# This works
map_if(mtcars, is.numeric, mean)
# This does not work
map_if(cyl, is.numeric, mean)
Run Code Online (Sandbox Code Playgroud) 我正在尝试锻炼一个函数(没有任何成功),该函数将自动组装 ggplots 图列表patchwork。
该函数将接受以下输入:
通过这些输入,函数应该自动构建绘图。我在下面提供了一个例子:
library(tidyverse)
library(patchwork)
p1 <- mtcars %>% ggplot() + geom_bar(aes(mpg))
p2 <- mtcars %>% ggplot() + geom_bar(aes(cyl))
p3 <- mtcars %>% ggplot() + geom_bar(aes(disp))
p4 <- mtcars %>% ggplot() + geom_bar(aes(hp))
p5 <- mtcars %>% ggplot() + geom_bar(aes(drat))
p6 <- mtcars %>% ggplot() + geom_bar(aes(wt))
plot_list <- list(mpg = p1,
cyl = p2,
disp = p3,
hp = p4,
drat = p5,
wt = p6)
# Function inputs
no_of_rows = …Run Code Online (Sandbox Code Playgroud) 我的代码如下:
read.csv("http://asic.gov.au/Reports/YTD/2018/RR20180420-001-SSDailyYTD.csv", skip=1, fileEncoding = "UTF-16", sep = "\t", header = FALSE)
Run Code Online (Sandbox Code Playgroud)
Error in read.table(file = file, header = header, sep = sep, quote = quote, : no lines available in input
@hrbrmstr - 会话信息读数
sessionInfo()
R version 3.5.0 (2018-04-23)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows >= 8 x64 (build 9200)
Matrix products: default
locale:
[1] LC_COLLATE=English_Australia.1252 LC_CTYPE=English_Australia.1252
[3] LC_MONETARY=English_Australia.1252 LC_NUMERIC=C
[5] LC_TIME=English_Australia.1252
attached base packages:
[1] stats graphics grDevices utils datasets …Run Code Online (Sandbox Code Playgroud) 我希望有条件地使用tidyverse取代截至2017年7月16日的缺失收入.
我的数据
library(tidyverse)
library(lubridate)
df<- tribble(
~Date, ~Revenue,
"2017-07-01", 500,
"2017-07-02", 501,
"2017-07-03", 502,
"2017-07-04", 503,
"2017-07-05", 504,
"2017-07-06", 505,
"2017-07-07", 506,
"2017-07-08", 507,
"2017-07-09", 508,
"2017-07-10", 509,
"2017-07-11", 510,
"2017-07-12", NA,
"2017-07-13", NA,
"2017-07-14", NA,
"2017-07-15", NA,
"2017-07-16", NA,
"2017-07-17", NA,
"2017-07-18", NA,
"2017-07-19", NA,
"2017-07-20", NA
)
df$Date <- ymd(df$Date)
Run Code Online (Sandbox Code Playgroud)
我想要有条件地替换NA的日期
max.date <- ymd("2017-07-16")
Run Code Online (Sandbox Code Playgroud)
输出我想要的
# A tibble: 20 × 2
Date Revenue
<chr> <dbl>
1 2017-07-01 500
2 2017-07-02 501
3 2017-07-03 502
4 2017-07-04 503
5 …Run Code Online (Sandbox Code Playgroud) 我有以下两个链接:
https://pbs.twimg.com/media/Dv3pIsIUwAEdu--.jpg:large
https://pbs.twimg.com/media/Dv3lKfjV4AAkIpY.jpg:large
数据以表格格式呈现,但作为 jpeg,我想捕获此信息并将其转换为 df 或 tibble。
我尝试使用tesseract但结果不好,我的代码如下:
library(tesseract)
text <- ocr_data(input_1, engine = eng)
text <- tesseract::ocr_data("https://pbs.twimg.com/media/Dv3lKfjV4AAkIpY.jpg:large", engine = eng)
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我正在尝试解决一个简单的问题。我检查一个特定的条件,如果它是真的,我插入一个date值或插入NA(即留下一个空白单元格)。
为了if_else让它发挥作用,我正在使用,但它顽固地拒绝工作(我花了几个小时阅读 SO 和帮助页面)。
这是我尝试过但失败的方法:
library(tidyverse)
library(lubridate)
df <- data.frame(date = dmy(c("01/01/2019", "02/01/2019", "03/01/2019")),
status = c("Active", "Suspended", "Active"),
stringsAsFactors = FALSE)
df %>% mutate(sus_date = if_else(status == "suspended", 1, 2)) # This works
df %>% mutate(sus_date = if_else(status == "suspended", date, NA)) # Throws an Error
Error: `false` must be a `Date` object, not a logical vector
Call `rlang::last_error()` to see a backtrace.
df %>% mutate(sus_date = if_else(status == "suspended", date, NA_real_)) # …Run Code Online (Sandbox Code Playgroud) 我有一个输出df,我试图closing_bal在名为的列中的每个条目之后插入空白行placement_status_type。想法是,在我插入空白行后,我另存为excel文件,以使最终用户可以轻松地读取excel中的数字。
我知道该add_row功能,但无法找到在某种条件下使用它的方法。
sample data:
df <- data.frame(stringsAsFactors=FALSE,
placement_status_type = c("opening_bal", "New", "Transfer", "Reinstated",
"Suspended", "Exit", "closing_bal",
"opening_bal", "New", "Transfer", "Reinstated",
"Suspended", "Exit", "closing_bal", "opening_bal",
"New", "Transfer", "Exit", "closing_bal",
"opening_bal", "New", "Exit", "closing_bal",
"Transfer", "Exit", "closing_bal", "Transfer",
"Suspended", "Exit", "closing_bal"),
Aug_18 = c(173, 11, -6, 16, -21, -9, 164, 5, 4, 0, 3, 0, -2,
10, 17, 6, -1, -4, 18, -1, 0, 0, -1, 0, 0,
0, 0, 0, 0, 0)
)
Run Code Online (Sandbox Code Playgroud) 我的清单如下:
list(c(TRUE, FALSE), TRUE, FALSE)
Run Code Online (Sandbox Code Playgroud)
该列表包含只有一个目标TRUE,其他都是的混合TRUE和FALSE。我想算出TRUE唯一对象的位置编号,在这种情况下,答案是2。
听起来很简单,但到目前为止我还是失败了。
有什么解决办法吗?
r ×8
tidyverse ×4
dictionary ×1
dplyr ×1
if-statement ×1
list ×1
missing-data ×1
patchwork ×1
purrr ×1
read.csv ×1
read.table ×1