小编Jer*_*ryN的帖子

R包中的数据可以使用.rds文件吗?

我正在尝试将一些代码转换为包。根据文档,仅.RData文件应位于数据目录中,但我宁愿使用.rds文件,因为它们不保留文件名。有时候,我使用与以后阅读时要使用的名称不同的名称进行保存。而且我真的只想为文件设置一个数据集,因此.RData文件存储更多数据的能力实际上是不利的。

所以我的问题是为什么不允许包数据目录中的.rds文件?还是有解决此问题的另一种方法?

r package

6
推荐指数
1
解决办法
729
查看次数

readr read_csv 是否允许指定 zip 中的特定文件

tidyverse 中的 readr 包可以选择自动解压 zip 文件并将其转换为 tibble。但我有一个包含多个 csv 文件的 zip 文件。在下面的代码行中,SSPdataZip 包含三个文件。当我运行它时,我收到一条警告“Zip 中有多个文件...”以及它选择的文件的名称。我知道我想要的名称,但不知道如何告诉 read_csv 它是什么。我缺少一个选项吗?

temp <- readr::read_csv(SSPdataZip, col_names = TRUE, guess_max = 2000)
Run Code Online (Sandbox Code Playgroud)

r readr

6
推荐指数
1
解决办法
893
查看次数

r数据表按列的第二列列表划分列

我有一个脚本生成一个数据表,其中包含一些我希望除以其他列的列,并将结果存储在新列中.这是一个例子.

library(data.table)
dt <- data.table(V1 = c( 5.553465,  4.989168,  2.563682,  6.987971, 19.220936),
                 V2 = c(4.248335, 19.768138,  3.840026, 17.411003, 17.939368),
                 V3 = c(9.683953, 15.344424, 11.729091,  7.534210,  5.404000),
                 V4 = c(5.949093,  4.553023,  9.765656, 11.211069,  4.085964),
                 V5 = c(11.814671,  5.460138,  2.492230,  1.48792,  8.164280))

list1 <- list(c("V1", "V2", "V3"))
list2 <- list(c("V2", "V4", "V5"))
listRatio <- list(c("rat1","rat2","rat3"))
Run Code Online (Sandbox Code Playgroud)

我尝试了各种方法来将list1元素中的值除以list2元素中的值,但未成功.两个在下面; 既不起作用.

dt[, (listRatio) := list1/list2]
dt[, c("rat1","rat2","rat3") := mapply(dt, function(x,y) x / y, x = c(V1, V2, V3),  y = c(V2, V4, V5))]
Run Code Online (Sandbox Code Playgroud)

r data.table

5
推荐指数
1
解决办法
1221
查看次数

r检查软件包版本是否大于xyz

R软件包的版本号如1.97.1。我可以检查版本号

 packageVersion("data.table")
Run Code Online (Sandbox Code Playgroud)

在我的计算机上,这将返回1.10.0。

我想做的是检查data.table版本是否比1.9.7更新,因为1.9.7之后的版本具有我的代码需要的功能。我尝试过将版本分为各个组成部分,并以不同的方式对其进行评估,但是我还没有找到任何可靠的方法来执行此操作。任何建议,不胜感激。

r version package

5
推荐指数
2
解决办法
1298
查看次数

r ggplot 动态使用plotmath 表达式

我想使用 ggplot 动态更改轴标签。下面的代码是我想要做的事情的简单版本。它在 y 轴上正确显示度数符号。注释掉的 ylab 代码行是我想做的但失败了。我想创建绘图代码,将其分配给一个变量(例如 yLabel),然后让 ggplot 解释它。

library(data.table)
library(ggplot2)

DT <- data.table(timeStamp=c(1:12), ColN1=runif(12, 0, 10))
DT.long <- data.table::melt(
  DT, id.vars = c("timeStamp"))

yLabel <- "Temperature~(~degree~F)"
yLabel1 <- expression("Temperature~(~degree~F)")

p <- ggplot(data = DT.long, aes(x = timeStamp, y = value)) + 
  xlab("Time") + 
  #    ylab( expression(paste("Value is ", yLabel,","))) +
#  ylab(yLabel) +
#  ylab(yLabel1) +
  ylab(Temperature~(~degree~F)) +

    scale_y_continuous() +
  theme_bw() +
  geom_line()
print(p)
Run Code Online (Sandbox Code Playgroud)

r ggplot2 plotmath

5
推荐指数
1
解决办法
1136
查看次数

r ggplot2 如何在 geom_text 中制作 vjust 将标签放在栏的底部

我试图解决两个问题:

  1. 第一种是让条形图中的某些条形超出图形的顶部。
  2. 第二种是在图表底部插入条形的值,这样查看图表的人就可以知道条形在图表上方多远。

下面的代码是我试图解决这两个问题的尝试。它解决了第一个问题coord_cartesian,因为条形图超出了图形的顶部。但这并不能解决第二个问题。条形的值位于条形的顶部而不是底部。我认为 vjust = "bottom" 或 0 可以解决问题,但我已经在很多地方尝试过,但都没有成功。

library(ggplot2)
library(data.table)

dt <- data.table(
  scenario = c("2010", "SSP2-NoCC", "SSP2-HGEM", "SSP1-NoCC", "SSP3-NoCC", "2010", "SSP2-NoCC", "SSP2-HGEM", "SSP1-NoCC", "SSP3-NoCC", "2010", "SSP2-NoCC", "SSP2-HGEM", "SSP1-NoCC", "SSP3-NoCC", "2010", "SSP2-NoCC", "SSP2-HGEM", "SSP1-NoCC", "SSP3-NoCC"),
  value = c(45.75, 15.74, 17.16, 10.73, 24.03, 15.37, 6.87, 7.61, 5.63, 8.87, 9, 3.43, 3.76, 2.93, 4.01, 2.53, 1.79, 1.95, 1.77, 1.79),
  region_name = c("Low", "Low", "Low", "Low", "Low", "Lower middle", "Lower middle", "Lower middle", "Lower middle", "Lower middle", "Upper middle", …
Run Code Online (Sandbox Code Playgroud)

r ggplot2

5
推荐指数
1
解决办法
6120
查看次数

r 如何将mapply与数据表一起使用

我想要在数据表中执行看似简单的 mapply 应用程序。我想将一系列数据表列乘以另一列中的值。这是我的功能。y 是与其他列中的值相乘的单列。xIn 是要执行此操作的列名称。

f.xRatio <- function(xIn, y) {return(y * (xIn + 1)/(xIn - 1))}
Run Code Online (Sandbox Code Playgroud)

我有一个数据表,其中有一个名为 GDPratio 的列和一些名称为 x.food1、x.food2 等的列。我将这些列名称放入名为 x 的变量中

x <- paste0("x.", foodNames)
Run Code Online (Sandbox Code Playgroud)

我使用该函数创建的新列的名称创建另一个变量

xRatio <- paste0("xRatio.", foodNames)
Run Code Online (Sandbox Code Playgroud)

以下是我尝试使用 mapply 从函数创建 xRatio 列的两个版本。

dt[, (xRatio) := mapply(FUN = f.xRatio, xIn = .SD, y = GDPRatio), .SDcols = (x)]

dt[, (xRatio) := mapply(FUN = f.xRatio, xIn = .(x), y = GDPRatio)]
Run Code Online (Sandbox Code Playgroud)

两者都不起作用。我认为第一个已经很接近了。我希望有人能够指出我逻辑中的缺陷,而无需我创建可重现的示例。

r mapply data.table

5
推荐指数
1
解决办法
3373
查看次数

数据表中的 R 轮 PosixCT 变量

以下代码以 POSIXct 格式创建一个 10 行数据表,其中包含一个变量 timeStamp。

library(data.table)
dt <- data.table(timeStamp = seq( as.POSIXct("2017-07-01 14:51:50"), by=60, len=10))
Run Code Online (Sandbox Code Playgroud)

我想将时间戳舍入到最近的分钟。

此命令在 timeStamp2 的每一行中放置一个列表,而不是修改后的 POSIXct 变量。

dt[, timestamp2 := round(timeStamp, "mins")]
Run Code Online (Sandbox Code Playgroud)

下面的代码行做了我想要的(在这个例子中四舍五入),但在数据表中不起作用。

timestamp2 <- round(dt$timeStamp, "mins")
Run Code Online (Sandbox Code Playgroud)

我正在使用 data.table 版本 1.10.4-3 和 MRAN R 版本 3.4.1。

r posixct data.table

4
推荐指数
1
解决办法
414
查看次数

r 将光栅堆栈或砖块转换为动画

我已经从http://luh.umd.edu/data.shtml下载了一些土地利用场景结果的 NetCDF 文件。这个位置的每个文件都有 11 种土地利用类型的值,每年的值从 2015 年到 2100 年。我想制作一个动画 gif 或电影来显示随时间的变化。这看起来应该很简单,但我尝试了多种路线,但都没有奏效,所以我希望有一些真正有效的路线。1. 一种方法涉及使用栅格包中的堆栈或砖函数创建土地利用变量之一的栅格堆栈或砖。然后使用光栅动画功能。不幸的是,我收到以下错误消息“不支持 RasterLayer [堆栈、砖块] 对象的动画”。

  1. 另一种选择是将每年的土地利用数据转换为 SpatialPixelDataFrame 然后转换为 data.frame,使用 ggplot 创建一个 gif,然后将这些 gif 组合成动画 gif。但这个过程似乎极其复杂。

包含我目前为此所做的努力的 R 脚本在这里

r raster ggplot2

4
推荐指数
2
解决办法
1431
查看次数

r plotly 如何使用纬度、经度和 z 获得 3d 表面

我有大约 10 个位置的纬度、经度和数据值。这是我可以轻松为我的问题构建的数据框示例

x <- c("-108.6125","-108.5114","-108.805","-108.4014","-108.5615","-108.8349","-108.225","-108.3139","-108.5568","-108.4968")
y <- c("39.02205","39.22255","39.598","38.89478","39.06429","39.27625","39.03","39.1306","39.14823","38.89795")
z <- c("60.7735","56.45783","49.65","60.15","50","53.95417","50.825","56","55.843","38.73333")
df <- data.frame(x = as.numeric(x),y = as.numeric(y),z = as.numeric(z))
Run Code Online (Sandbox Code Playgroud)

我想根据数据框中的 x、y 和 z 值创建一个 3d 表面。x 和 y 是纬度和经度。z 是经纬度对的值。

我可以做一个 3d 散点图,plot_ly(df, x = ~x, y = ~y, z = ~z) %>% add_markers(color = ~z)但向此代码添加 add_surface 不起作用。

涉及火山 df ( plot_ly() %>% add_surface(x = ~x, y = ~y, z = ~volcano)的绘图 3d 表面示例使用均匀分布的 x 和 y 值,z 是一个二维数组。如果我理解正确,我需要每个位置的 x 和 y 对。

是否可以进行某种操作来创建 add_surface …

3d r plotly

2
推荐指数
1
解决办法
1274
查看次数

r 数据表 dcast 新列的顺序

下面的 csv 来自一个更长的数据表,称之为temp. 我想将它转换temp.wideregion_codeas 列region_code(SAS, SSA, EUR, ...)的垂直顺序作为列的顺序。我只是注意到 dcast 按字母顺序排列新列。

         scenario region_code                  region_name    value
 1:          2010         SAS                   South Asia 61.17716
 2:          2010         SSA   Africa south of the Sahara 62.08588
 3:          2010         EUR                       Europe 63.76123
 4:          2010         LAC  Latin America and Caribbean 68.84806
 5:          2010         FSU          Former Soviet Union 59.04499
 6:          2010         EAP        East Asia and Pacific 64.00579
 7:          2010         NAM                North America 66.18235
 8:          2010         MEN Middle East and North Africa …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

r 将 DOI 列表转换为 BibTeX

我有一个 DOI 列表,我想将其转换为 BibTeX 记录。bib2doi 包似乎不起作用,所以我使用 R 的curl 包编写了以下代码来扫描列表,创建 bibtex 记录并将其附加到文件中。它对于许多 DOI 都可以正常工作,但(Failed to connect to data.chinadoi.cn port 80: Connection refused)对于 DOI会返回此错误10.11975/j.issn.1002-6819.2017.z1.035。我不知道如何写出错误的 DOI 并继续下去。这是包含三个 DOI 的代码,第二个 DOI 是失败的。

library(curl)
DOIlist <- c("10.1111/1748-5967.12330", "10.11975/j.issn.1002-6819.2017.z1.035", "10.1016/j.envsci.2019.03.017")

h <- new_handle()
handle_setheaders(h, "accept" = "application/x-bibtex")

for (i in 1:length(DOIlist)) {
  url <- paste0("https://doi.org/", DOIlist[i])
  print(paste0("url: ", url))
  curl_download(url, destfile = "curltest.bib", handle = h, mode = "a")
}
Run Code Online (Sandbox Code Playgroud)

curl doi r

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

R在数据表中更改行顺序

我想根据列元素列表更改行顺序.以下是此类列表的示例:

scenChoice <- c("X2010", "SSP2-NoCC-REF", "SSP1-NoCC-REF", "SSP3-NoCC-REF", "SSP2-GFDL-REF", "SSP2-IPSL-REF", "SSP2-HGEM-REF")
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的数据表的输出:

scenario    region_code value
SSP1-NoCC-REF   lowInc  0.079897553
SSP2-GFDL-REF   lowInc  0.119297969
SSP2-HGEM-REF   lowInc  0.124730614
SSP2-IPSL-REF   lowInc  0.121280208
SSP2-MIROC-REF  lowInc  0.121459249
2010    lowInc  0.316646263
SSP2-NoCC-REF   lowInc  0.115680977
SSP3-NoCC-REF   lowInc  0.167769763
SSP1-NoCC-REF   upMidInc    0.020520457
SSP2-GFDL-REF   upMidInc    0.024871731
SSP2-HGEM-REF   upMidInc    0.026223688
SSP2-IPSL-REF   upMidInc    0.025594828
SSP2-MIROC-REF  upMidInc    0.025523934
2010    upMidInc    0.063808085
SSP2-NoCC-REF   upMidInc    0.023987357
SSP3-NoCC-REF   upMidInc    0.027964746
SSP1-NoCC-REF   highInc 0.014672749
SSP2-GFDL-REF   highInc 0.015258928
SSP2-HGEM-REF   highInc 0.016021142
SSP2-IPSL-REF   highInc 0.015681295
SSP2-MIROC-REF  highInc 0.015602455
2010    highInc 0.020245181 …
Run Code Online (Sandbox Code Playgroud)

r data.table

0
推荐指数
1
解决办法
209
查看次数

标签 统计

r ×13

data.table ×5

ggplot2 ×3

package ×2

3d ×1

curl ×1

doi ×1

mapply ×1

plotly ×1

plotmath ×1

posixct ×1

raster ×1

readr ×1

version ×1