我知道关于这个问题的其他问题,但它们与我的系统设置或我得到的安装错误没有多少共同之处,所以:
我使用的是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) 我在几何形状为多边形类型的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) 我有一个包含完整和不完整行的 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
计数为与任何当前值的匹配。这可能吗?