小编obr*_*oil的帖子

ROracle包安装失败

我知道关于这个问题的其他问题,但它们与我的系统设置或我得到的安装错误没有多少共同之处,所以:

我使用的是Windows 7,64位

我已经安装了64位Oracle Instant Client 18.3.0.0.0及其sdk和odbc扩展,可从http://www.oracle.com/technetwork/topics/winx64soft-089540.html获得.

我把安装位置`C:\ Oracle\instantclient_18_3'放在PATH上.

我安装了R 3.5.1和Rtools 3.5; 两者都在PATH上.

在R中,

Sys.setenv(
  'ORACLE_HOME' = 'C:/Oracle/instantclient_18_3',
  'OCI_INC'     = 'C:/Oracle/instantclient_18_3/sdk/include',
  'OCI_LIB64'   = 'C:/Oracle/instantclient_18_3'
  )
install.packages("ROracle", type="source")
Run Code Online (Sandbox Code Playgroud)

结果如下

* installing *source* package 'ROracle' ...
** package 'ROracle' successfully unpacked and MD5 sums checked
Oracle Client Shared Library 64-bit - 18.3.0.0.0 Operating in Instant Client mode.
found Oracle Client C:/Oracle/instantclient_18_3
found Oracle Client include C:/Oracle/instantclient_18_3/sdk/include
copying from C:/Oracle/instantclient_18_3/sdk/include
** libs
c:/Rtools/mingw_64/bin/gcc  -I"C:/Program Files/R/R-3.5.1/include" -DNDEBUG -I./oci         -O2 -Wall  -std=gnu99 …
Run Code Online (Sandbox Code Playgroud)

r windows-7-x64 roracle rtools

6
推荐指数
2
解决办法
2299
查看次数

对sf对象的逐行操作

我在几何形状为多边形类型的sf对象上进行按行操作遇到了一些麻烦。

by_row中的sf函数似乎不起作用,例如,以下代码应创建一个包含边界框对象的列表列:

 purrr::by_row(sf_polygons_object, function(x) {
   list(st_bbox(x))
 }, .to = 'bb')
Run Code Online (Sandbox Code Playgroud)

UseMethod(“ st_bbox”)中的错误:没有适用于“ st_bbox”的适用方法应用于类“ c('tbl_df','data.frame')”的对象

(本身并不是最有用的示例,但可以说明问题)。

我尝试了几种替代方法,例如rowwise() %>% mutate()mutate( x = apply(., 1, function(x) ...))和,它们都无法工作,因为它们不向st_bbox()提供所需的sf对象。这是一个错误,还是我处理问题的能力很差?

编辑:可复制的示例

library(sp)
library(rgdal)
library(rgeos)
library(sf)
library(tidyverse)
library(rnaturalearth)

nec <- st_as_sf(ne_countries()[1:5,]) %>%
  purrr::by_row(., function(x) st_bbox(x), .to = 'bb')
Run Code Online (Sandbox Code Playgroud)

r purrr tidyverse r-sf

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

用 NA 标记冗余行

我有一个包含完整和不完整行的 data.frame,例如:

dat <- data.frame(
  "one" = c(1, 1, 1, 3, NA),
  "two" = c(2, 2, NA, 4, 4),
  "three" = c(1, 1, NA, 5, 5),
  "four"  = c(2, NA, 2, 6, 6)
)
Run Code Online (Sandbox Code Playgroud)

我想将包含 NA 的行标记为 TRUE,其中它们的值等于同一列中的值,在具有较少 NA 的行上,所以

dat$redundant <- c(FALSE, TRUE, TRUE, FALSE, TRUE)
Run Code Online (Sandbox Code Playgroud)

本质上,我正在寻找duplicated(dat, MARGIN = 1)NA计数为与任何当前值的匹配。这可能吗?

r

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

标签 统计

r ×3

purrr ×1

r-sf ×1

roracle ×1

rtools ×1

tidyverse ×1

windows-7-x64 ×1