小编Ada*_*dam的帖子

按条件(>)计算每行的列数

我正在尝试为矩阵的每一行计算出多少列的值大于指定值.对不起,我问这个简单的问题,但我无法弄明白.

对于我感兴趣的一些空间点,我已经从多年光栅的栅格堆栈中提取了最大温度值.数据类似于:

data <- cbind('1990' = c(25, 22, 35, 42, 44), '1991' = c(23, 28, 33, 40, 45), '1992' = c(20, 20, 30, 41, 43))

    1990   1991   1992
1     25     23     20
2     22     28     20
3     35     33     30
4     42     40     41
5     44     45     43
Run Code Online (Sandbox Code Playgroud)

我希望最终得出每个地点温度高于30的年数,例如:

    yr.above   
1          0
2          0
3          2
4          3
5          3
Run Code Online (Sandbox Code Playgroud)

我尝试过一些东西,但是它们不起作用并且非常不合逻辑(例如尝试长度(数据[1:长度(数据),(等等没有意义))或应用(数据,1,长度) (数据)> 30),我知道这些没有意义,但我有点卡住了.

r count col

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

R:检查url的存在,httr:GET()和url.exists()的问题

我有一个大约13,000个URL的列表,我想从中提取信息,但是,并非每个URL实际存在.事实上,大多数人没有.我刚尝试通过所有13,000个网址,html()但需要很长时间.我试图找出如何在解析它们之前查看url是否实际存在html().我已经尝试使用httrGET()功能,以及rcurlsurl.exists()功能.由于某种原因,即使URL确实存在,也url.exist()始终返回FALSE值,并且我使用的方式GET()总是返回成功,我认为这是因为页面被重定向.

以下URL表示我正在解析的页面类型,第一个不存在

urls <- data.frame('site' = 1:3, 'urls' = c('https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-1&unit=SLE010', 
                            'https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-2&unit=HMM202',
                            'https://www.deakin.edu.au/current-students/unitguides/UnitGuide.php?year=2015&semester=TRI-2&unit=SLE339'))

urls$urls <- as.character(urls$urls)
Run Code Online (Sandbox Code Playgroud)

因为GET(),问题是第二个URL实际上并不存在,但它被重定向,因此返回"成功".

 urls$urlExists <- sapply(1:length(urls[,1]), 
                     function(x) ifelse(http_status(GET(urls[x, 'urls']))[[1]] == "success", 1, 0))
Run Code Online (Sandbox Code Playgroud)

因为url.exists(),即使第一个和第三个URL确实存在,我也会返回三个FALSE.

 urls$urlExists2 <- sapply(1:length(urls[,1]), function(x) url.exists(urls[x, 'urls']))
Run Code Online (Sandbox Code Playgroud)

我查了一下这两个职位1,2,但我宁愿不使用的用户代理,只是因为我不知道如何找到我的,或者它是否会使用其他计算机上的验证码不同人的变化.因此,使代码更难以被其他人接收和使用.两篇帖子的答案建议使用GET()in httr.这似乎GET()是首选的方法,但我需要弄清楚如何处理重定向问题.

在解析它们之前,任何人都可以建议在R中测试URL的存在html()吗?我也很乐意为此问题提出任何其他建议的工作.

更新:

在查看了返回的值后,GET()我想出了一个解决方法,详细了解答案.

html url get r httr

12
推荐指数
3
解决办法
3777
查看次数

R tm removeWords函数不删除单词

我试图从我建立的语料库中删除一些单词,但它似乎没有起作用.我首先浏览所有内容并创建一个数据框,按照频率顺序列出我的单词.我使用此列表来识别我不感兴趣的单词,然后尝试创建一个删除了单词的新列表.但是,单词仍保留在我的数据集中.我想知道我做错了什么以及为什么这些话没有被删除?我已经包含以下完整代码:

install.packages("rvest")
install.packages("tm")
install.packages("SnowballC")
install.packages("stringr")
library(stringr) 
library(tm) 
library(SnowballC) 
library(rvest)

# Pull in the data I have been using. 
paperList <- html("http://journals.plos.org/plosone/search?q=nutrigenomics&sortOrder=RELEVANCE&filterJournals=PLoSONE&resultsPerPage=192")
paperURLs <- paperList %>%
  html_nodes(xpath="//*[@class='search-results-title']/a") %>%
  html_attr("href")
paperURLs <- paste("http://journals.plos.org", paperURLs, sep = "")
paper_html <- sapply(1:length(paperURLs), function(x) html(paperURLs[x]))

paperText <- sapply(1:length(paper_html), function(x) paper_html[[1]] %>%
                      html_nodes(xpath="//*[@class='article-content']") %>%
                      html_text() %>%
                      str_trim(.))
# Create corpus
paperCorp <- Corpus(VectorSource(paperText))
for(j in seq(paperCorp))
{
  paperCorp[[j]] <- gsub(":", " ", paperCorp[[j]])
  paperCorp[[j]] <- gsub("\n", " ", paperCorp[[j]])
  paperCorp[[j]] <- gsub("-", " ", paperCorp[[j]])
} …
Run Code Online (Sandbox Code Playgroud)

text r corpus text-mining tm

9
推荐指数
2
解决办法
3万
查看次数

使用R中的大量数据和大量栅格?

G'day,我正在处理一个大型数据集,其中包含约125,000个lon/lat位置和日期,用于物种存在/缺失记录.对于每个地点,我想弄清楚日期和日期前3个月内每个地点的天气状况.为此,我已经下载了在5年期间获取数据的给定天气变量(例如,最高温度)的每日天气数据.我总共有1,826个光栅文件,全部在2-3mb之间.

我曾计划堆叠所有光栅文件,然后从每个光栅(1,826)中为每个点提取一个值.这将产生一个巨大的文件,我可以用它来搜索我需要的日期.但是,这是不可能的,因为我无法堆叠那么多栅格.我尝试将栅格分成500个堆叠,这可行,但它产生的文件大约是1Gb而且很慢(行,125,000;列,500).此外,当我尝试将所有这些文件放入R中以创建大数据帧时,它不起作用.

我想知道是否有办法处理R中的这一数据量,或者是否有一个我可以用来帮助的包.我可以使用像ff这样的包吗?有没有人有任何建议采用功耗较低的方法来做我想做的事情?我曾经想过像lapply函数这样的东西,但之前从未使用过,我不确定从哪里开始.

任何帮助都会非常棒,感谢您的时间.我目前使用的代码没有成功,如下所示.

亲切的问候,亚当

library(raster)
library(rgdal)
library (maptools)
library(shapefiles)

# To create weather data files, first set the working directory to the appropriate location (i.e., maxt)
# list of raster weather files
files<- list.files(getwd(), pattern='asc')
length(files)

memory.size(4000)  
memory.limit(4000)

# read in lon/lat data
X<-read.table(file.choose(), header=TRUE, sep=',')
SP<- SpatialPoints(cbind(X$lon, X$lat)) 

#separate stacks into mannageable sizes
s1<- stack(files[1:500])
i1 <- extract( s1,SP, cellnumbers = True, layer = 1, nl = 500)
write.table(i1, file="maxt_vals_all_points_all_dates_1.csv", sep=",", row.names= FALSE, col.names= TRUE)
rm(s1,i1)
s2<- stack(files[501:1000]) …
Run Code Online (Sandbox Code Playgroud)

memory-management r raster spatial large-files

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

使用R从澳大利亚的lat/lon点网站提取高程

G'day所有人,

我试图得到一些高程数据,我有700点.我想我可能会使用提供给同一个问题的代码(转换为纬度/经度到R的高度),不幸的是我在使用geonames包时遇到错误,并且最佳答案提供的网站没有澳大利亚海拔数据(错误)在FYI下面提供).

我发现另一个网站为澳大利亚提供了非常准确的高程数据,但我不知道如何从网页中提取信息.我认为它正在使用谷歌提升API,但我再次不知道如何访问它.

当我将'lat,lon'坐标放入'搜索位置'框时,它会在地图下方提供高程数据.但是,我似乎无法在源页面中找到它.该网站是http://www.daftlogic.com/sandbox-google-maps-find-altitude.htm.

一些示例lon lat值有效:

-36.0736,146.9442

-36.0491,146.4622

我想知道是否有人可以帮我从R查询这个网站,并提取高程数据?或者看起来好像很麻烦?我意识到网站上有一个批处理功能(最多100个位置),但是能够从R执行此操作会很酷.

谢谢大家,对不起,如果这是非常明显的.

干杯,亚当

错误

使用地理名称时:

elevation <- GNgtopo30(adult$lat, adult$lon)
Error in getJson("gtopo30JSON", list(lat = lat, lng = lng)) : 
  error code 10 from server: Please add a username to each call in order for geonames to    be able to identify the calling application and count the credits usage.
In addition: Warning message:
In readLines(u) :
  incomplete final line found on 'http://ws.geonames.org/gtopo30JSON?  lat=-36.0736&lng=146.9442'
Run Code Online (Sandbox Code Playgroud)

使用查询代码时:

library(RCurl)
library(XML)
url <- paste("http://earthtools.org/height", …
Run Code Online (Sandbox Code Playgroud)

api r elevation spatial altitude

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

Python:从循环中返回值而不会中断

G'day,我有一份按地点分组的个人名单.我想生成一个新变量,根据每个人的位置为每个人提供一个数字.我希望我的数据看起来像是:

place       individual
here        1
here        2
here        3
there       1
there       2
somewhere   1 
somewhere   2
Run Code Online (Sandbox Code Playgroud)

我写了这个:

    nest="ddd", "ddd", "fff", "fff", "fff", "fff", "qqq", "qqq"

    def individual(x):
        i = 0
        j = 1
        while i < len(x):
            if x[i] == x[i-1]:
                print(j+1)
                i = i + 1
                j = j + 1
            else:
                print(1)
                i = i + 1
                j = 1

    individual(nest)
Run Code Online (Sandbox Code Playgroud)

这会打印出我想要的值,但是,当我将返回放在那里时,它会突破循环并仅返回第一个值.我想知道如何返回这些值,以便我可以将它们作为新列添加到我的数据中?

我读到了收益率?但不确定它是否合适.谢谢您的帮助!

干杯,亚当

python yield return return-value

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

使用rvest在h后刮掉所有p?(或其他R包)

我是html抓取世界的新手,我很难在特定标题下拉入段落,在R中使用rvest

我想从多个站点中获取信息,这些站点都具有相对类似的设置.它们都有相同的标题,但标题下的段落数量可能会发生变化.我能够使用以下代码在标题下刮取特定段落:

unitCode <- data.frame(unit = c('SLE010', 'SLE115', 'MAA103'))

html <- sapply(unitCode, function(x) paste("http://www.deakin.edu.au/current-students/courses/unit.php?unit=", 
                                          x,
                                          "&return_to=%2Fcurrent-students%2Fcourses%2Fcourse.php%3Fcourse%3DS323%26version%3D3", 
                                          sep = ''))
assessment <- html[3] %>%
              html() %>%
              html_nodes(xpath='//*[@id="main"]/div/div/p[3]') %>%
              html_text()
Run Code Online (Sandbox Code Playgroud)

'xpath'元素引入评估标题下的第一段.有些页面在评估标题下有多个段落,如果我改变'xpath'变量来具体指定它们,我可以获得,例如p [4]或p [5].不幸的是,我想在数百页上迭代这个过程,所以每次更改xpath是不合适的,我甚至不知道每个页面中会有多少段落.

我认为,考虑到页面设置的不确定性,在我感兴趣的标题之后拉出所有<p>是最好的选择.

我想知道是否有办法在<h3>评估<h3>之后使用rvest或其他一些R刮包来刮掉所有<p>?

html xpath r scrape rvest

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

R中栅格的分辨率值

我只是想知道是否有人有一个转换表来解决R中的栅格问题.我想知道这些数字是用米表示的:

分辨率:0.08333333,0.08333333

分辨率:0.009398496,0999398496
分辨率:0.002349,0.002349 = 250m(我认为)

我真的想知道设置栅格对象以使单元格大小为1km ^ 2的分辨率.我正在使用横​​跨澳大利亚国家的栅格.

在此先感谢大家.

干杯,亚当

r resolution raster meter

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

在rgdal R中使用spTransform重新投影空间点时出错

G'day,
我有大量的lon/lat坐标,这些坐标位于CRS Australian Geodetic Datum 66/84(简称AGD66)中.我想将这些坐标从AGD66更改为WGS84,因为它们之间有大约200米的差异,我在WGS84中有其他坐标和图层.我试过这样做:

lon        lat
147.1428   -43.49083

library(rgdal)
pts<-read.table(file.choose(),header=TRUE,sep=',')  
# I first project the pts in their original CRS
pts66<-project(cbind(pts$lon,pts$lat), "+init=epsg:4202")
# Then to transform it to WGS84
pts84 = spTransform(pts66,CRS("+init=epsg:3033"))

Error in function (classes, fdef, mtable)  : 
unable to find an inherited method for function "spTransform", for signature "matrix", "CRS"
Run Code Online (Sandbox Code Playgroud)

有谁知道为什么我得到这个错误,或者对如何我可以从AGD66这些坐标改变到WGS84有什么建议?感谢您的帮助.

干杯,
亚当

r projection spatial coordinate-systems rgdal

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