我有什么理由可以使用
map(<list-like-object>, function(x) <do stuff>)
Run Code Online (Sandbox Code Playgroud)
代替
lapply(<list-like-object>, function(x) <do stuff>)
Run Code Online (Sandbox Code Playgroud)
输出应该是相同的,我做的基准似乎表明它lapply稍微快一些(它应该是map需要评估所有非标准评估输入).
那么有什么理由为什么这么简单的情况我应该考虑切换到purrr::map?我不是在这里问一个人对于语法,purrr等提供的其他功能的喜欢或不喜欢,而是严格地purrr::map与lapply假设使用标准评估的比较,即map(<list-like-object>, function(x) <do stuff>).purrr::map在性能,异常处理等方面是否有任何优势?下面的评论表明它没有,但也许有人可以详细说明一点?
......关于执行时间和/或记忆.
如果不是这样,请使用代码段进行证明.请注意,矢量化的加速不计算在内.增速必须来自apply(tapply,sapply,...)本身.
我是R的新手,我有以下疑问:
我试图在R中生成一个有多行(数据系列)的图.这些行中的每一行都是一个类别,我希望它具有独特的颜色.
目前我的代码是以这种方式设置的:
首先,我正在创建一个空图:
plot(1,type='n',xlim=c(1,10),ylim=c(0,max_y),xlab='ID', ylab='Frequency')
Run Code Online (Sandbox Code Playgroud)
然后对于我的每个类别,我使用"for"循环在这个空图中绘制线条,如下所示:
for (category in categories){
lines(data.frame.for.this.category, type='o', col=sample(rainbow(10)), lwd=2)
}
Run Code Online (Sandbox Code Playgroud)
这里有8个类别,因此该图中有8个线.正如您所看到的,我尝试从rainbows()函数中采样颜色以生成每行的颜色.
但是,当生成绘图时,我发现有多条线具有相同的颜色.例如,这8行中的3行具有绿色.
如何使这8条线中的每一条都具有独特的颜色?
另外,我如何在情节的传说中反映这种独特性?我试图查找legend()函数,但不清楚我应该使用哪个参数来反映每个类别的这种独特颜色?
任何帮助或建议将不胜感激.
标题确实总结了我的问题。Apply 似乎会删除 CRS,但其他函数不会。计算点向量上的地理函数的最佳方法是什么?
library(tidyverse)
library(sf)
# Generate 1000 lat longs, save as sf, and set crs
df1 <- data.frame(lat = runif(1000, 30, 33.4), long = runif(1000, -95, -82)) %>%
st_as_sf(coords = c("long", "lat"),
crs = 4326)
# Single point, with identical crs
df2 <- data.frame(lat = 32, long = -96) %>%
st_as_sf(coords = c("long", "lat"),
crs = 4326)
apply(df1, 1, function(x) st_distance(x, df2))
Run Code Online (Sandbox Code Playgroud)
这给出了错误:Error in st_distance(x, df2) : st_crs(x) == st_crs(y) is not TRUE
但这些都工作得很好:
st_distance(df1[1,], df2)
final.df <- …Run Code Online (Sandbox Code Playgroud)