天道酬勤,学无止境

r

Removing ggplot2's geom_point icons from the legend

问题 注意:这是对这个问题的跟进。 首先是重现数据的代码: mydf <- data.frame(year = c(rep(2000, 3), rep(2002, 3), rep(2004, 3), rep(2006, 3), rep(2008, 3), rep(2010, 3), rep(2012, 3), rep(2014, 3), rep(2016, 3)), answer = rep(c("A great deal", "Hardly any", "Only some"), 9), result = c(0.3015940, 0.1399303, 0.5584757, 0.2269548, 0.1792754, 0.5937698, 0.2955301, 0.1309859, 0.5734840, 0.3008197, 0.1344499, 0.5647303, 0.1919454, 0.2026290, 0.6054256, 0.1059793, 0.4190533, 0.4749674, 0.1190636, 0.3631279, 0.5178085, 0.1518314, 0.3181203, 0.5300483, 0.1424715, 0.3094615, 0.5480669)) mydf$year <- factor(mydf$year) mydf$answer

2022-07-11 10:01:23    分类:技术分享    r   ggplot2

Increment by one to each duplicate value

问题 我试图在 R 中找到一种正确的方法来查找重复值,并将值 1 添加到按 id 分组的每个后续重复值。 例如: data = data.table(id = c('1','1','1','1','1','2','2','2'), value = c(95,100,101,101,101,20,35,38)) data$new_value <- ifelse(data[ , data$value] == lag(data$value,1), lag(data$value, 1) + 1 ,data$value) data$desired_value <- c(95,100,101,102,103,20,35,38) 产生: id value new_value desired_value 1: 1 95 NA 95 2: 1 100 100 100 3: 1 101 101 101 # first 101 in id 1: add 0 4: 1 101 102 102 # second 101 in id 1: add 1 5: 1 101 102 103 # third 101 in id 1: add 2 6: 2 20 20 20 7: 2 35 35 35 8: 2 38 38 38 我尝试使用ifelse执行此操作,但它不能递归工作,因此它仅适用于下一行

2022-07-11 09:58:51    分类:技术分享    r   duplicates   sequence

Opening an ASCII file using R

问题 我正在尝试在 R 中打开一个 ASCII 文件。这个文件是从热像仪软件中导出的。 它具有作物的温度值。 我正在使用以下代码: library(raster) r = raster("AA092800_1.asc") plot(r) 但每次我收到以下错误“在.rasterObjectFromFile(x,band = band,objecttype =“RasterLayer”中无法识别为受支持的文件格式错误,:无法从该文件创建RasterLayer对象。” 在检查文件时,我发现有逗号而不是小数点,我用小数替换了所有逗号,但仍然存在同样的问题。 请帮帮我。 ASCII 文件随此附上。原始 ascii 文件 相同的文件逗号替换为小数点文本文件。 逗号替换为小数点文本文件 回答1 df1 <- read.table("AA092800_1.asc", skip = 11, header = FALSE, sep = "\t") head(df1, 2) # V1 V2 V3 V4 V5 V6 V7 V8 V9 V10 V11 V12 V13 V14 V15 V16 V17 V18 V19 V20 V21 V22 V23 V24 V25 V26 V27 V28 ... # 1 36,46 36,33 36,40 36,37 36,10 36,27 36,50 36,49 36,54

2022-07-11 09:56:56    分类:技术分享    r   raster

getting Error while installing DMwR package

问题 Error in read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) : cannot open the connection In addition: Warning messages: 1: In unzip(zipname, exdir = dest) : error 1 in extracting from zip file 2: In read.dcf(file.path(pkgname, "DESCRIPTION"), c("Package", "Type")) : cannot open compressed file 'bitops/DESCRIPTION', probable reason 'No such file or directory' 回答1 方法一: 报告的错误是无法打开连接。 在 Windows 中,这通常是防火墙问题,位于 Windows R 常见问题解答中。 通常的第一次尝试应该是运行 internet2.dll。 从控制台会话中,您可以使用: setInternet2(TRUE) R 版本 3.3.1 的新闻已修补 (2016-09-13 r71247)(仅限 Windows) 函数 setInternet2() 无效,将在适当时候删除。 “内部”和

2022-07-11 09:52:45    分类:技术分享    r

plotly in R: Listing legend items horizontally and centered below a plot

问题 我一直在调整图例和 R 中的图例。我无法弄清楚的一件事是如何(如果可能的话)重新定位图例项,以便它们水平列出并居中位于图下方。 默认图例项垂直放置并位于图的右侧,如下所示: plot_ly(data = iris, x = Sepal.Length, y = Petal.Length, mode = "markers", color = Species) 我可以通过以下方式获得下面的图例并以情节为中心: plot_ly(data = iris, x = Sepal.Length, y = Petal.Length, mode = "markers", color = Species) %>% layout(legend = list(x = 0.35, y = -0.5)) 但是,我注意到这个图例位置会根据我查看绘图的方式(我制作绘图窗口的尺寸等)而变化。 正因为如此,图例有时会意外地与情节重叠(通过定位太高)或与情节分开一个笨拙的大距离(通过定位太低)。 这是图例位置过低的示例图像: 此外,当将图例放置在图下方时,将图例项目水平(而不是垂直)列出可能会更好。 在此示例中,最好在图例中从左到右(而不是从上到下)列出 virginica、versicolor 和 setosa。 因此,理想情况下看起来像这样: 是否有可能获得这个 - 也就是说,在水平列出其项目时

2022-07-11 09:52:34    分类:技术分享    r   legend   plotly

R: find first non-NA observation in data.table column by group

问题 我有一个包含许多缺失值的data.table ,我想要一个变量,它为每组中的第一个非缺失值提供 1。 假设我有这样一个data.table: library(data.table) DT <- data.table(iris)[,.(Petal.Width,Species)] DT[c(1:10,15,45:50,51:70,101:134),Petal.Width:=NA] 现在在开始、结束和中间都有缺失。 我试过两个版本,一个是: DT[min(which(!is.na(Petal.Width))),first_available:=1,by=Species] 但它只找到全局最小值(在这种情况下,setosa 得到正确的 1),而不是组的最小值。 我认为是这种情况,因为data.table首先按 i 子集,然后按组排序,对吗? 所以它只适用于全局最小值which(!is.na(Petal.Width))的行,它是第一个非 NA 值。 第二次尝试 j 中的测试: DT[,first_available:= ifelse(min(which(!is.na(Petal.Width))),1,0),by=Species] 它只返回一列 1。 在这里,我没有很好的解释为什么它不起作用。 我的目标是: DT[,first_available:=0] DT[c(11,71,135)

2022-07-11 09:50:55    分类:技术分享    r   data.table

ggplot2: Adjust the legends distance to the x-axis?

问题 我想缩小图例到 x 轴的距离,但我找不到办法。 可能吗? 示例代码: library(ggplot2) ggplot(mtcars, aes(x = gear, y = mpg, fill = gear)) + geom_bar(stat = "identity") + theme(legend.position = "bottom") 回答1 ggplot(mtcars, aes(x = gear, y = mpg, fill = gear)) + geom_bar(stat = "identity") + theme(legend.position = "bottom",legend.margin=unit(-.05,"cm")) 回答2 确认。 @AdamBirenbaum 给出的答案不再有效。 legend.margin必须使用margin()指定(如错误消息报告)。 所以现在正确的答案应该是 ggplot(mtcars, aes(x = gear, y = mpg, fill = gear)) + geom_bar(stat = "identity") + theme(legend.position = "bottom",legend.margin=margin(t=-10)) 见:https://www.rdocumentation.org/packages

2022-07-11 09:49:33    分类:技术分享    r   ggplot2

How to uncompress a .Z file

问题 回答1 我知道我迟到了这个问题,但是当我发现你的问题时,我正在环顾四周,看看是否有比我们正在做的更好的建议。 正如 Ben 所建议的,调用另一个工具可能是 Windows、Linux 和 OS X 可以本地处理 .Z 文件的最佳选择。 这是一个 R 包中的函数示例(不是我编写的,Ivan Hanigan 编写的,但我使用过它,所以我知道它可以工作)检查操作系统,然后在操作系统是 Windows 时查找 7Zip。 https://github.com/swish-climate-impact-assessment/awaptools/blob/master/R/ZipFunctions.R ################################################################ # name:ZipFunctions.R uncompress_linux <- function(filename) { print(filename) system(sprintf('uncompress %s',filename)) } # tries to find 7 zip exe ExecutableFileName7Zip <- function() { executableName <- "C:\\Program Files\\7-Zip\

2022-07-11 09:47:27    分类:技术分享    r

R: list files based on pattern

问题 我想列出所有以“aT_”开头并具有扩展名“.tif”的文件(例如aT_123456_1x1_abcdef.tif ): files<- list.files(pattern="^aT_") files<- list.files(pattern="\\.tif$") 如何组合模式? 是否有任何符号的通配符:例如 0-9、az、AZ、_? 像files<- list.files(pattern="^aT_[any kind of symbol]\\.tif$") ? 回答1 使用.*匹配除换行符以外的任何类型的字符。 files<- list.files(pattern="^aT_.*\\.tif$") 或者 files<- list.files(pattern="^aT_\\w*\\.tif$")

2022-07-11 09:45:47    分类:技术分享    regex   r

R Time Series Analysis forecast result always remains same

问题 我正在尝试在 R 中进行时间序列分析。我有这样的数据时间序列数据集。 Month Year Value December 2013 5300 January 2014 289329.8 February 2014 596518 March 2014 328457 April 2014 459600 May 2014 391356 June 2014 406288 July 2014 644339 August 2014 251238 September 2014 386466.5 October 2014 459792 November 2014 641724 December 2014 399831 January 2015 210759 February 2015 121690 March 2015 280070 April 2015 41336 谷歌搜索我发现我可以使用 auto.arima 函数来预测结果。 我设法编写了 R 代码来使用 auto.arima 函数进行预测 data <- c(5300,289329.8,596518,328457,459600,391356,406288,644339,251238,386466.5,459792,641724,399831,210759,121690,280070,41336) data.ts <- ts(data

2022-07-11 09:41:41    分类:技术分享    r   time-series   forecasting