小编att*_*ool的帖子

使用lapply()优雅地在data.table中分配多个列

我试图通过应用共享函数找出一种优雅的方法来使用:=赋值来一次替换多列data.table.这种情况的典型用法可能是将字符串函数(例如gsub)应用于表中的所有字符列.将data.frame这样做的方式扩展到a 并不困难data.table,但我正在寻找一种与data.table做事方式一致的方法.

例如:

library(data.table)

m <- matrix(runif(10000), nrow = 100)
df <- df1 <- df2 <- df3 <- as.data.frame(m)
dt <- as.data.table(df)
head(names(df))
head(names(dt))

## replace V20-V100 with sqrt

# data.frame approach
# by column numbers
df1[20:100] <- lapply(df1[20:100], sqrt)
# by reference to column numbers
v <- 20:100
df2[v] <- lapply(df2[v], sqrt)
# by reference to column names
n <- paste0("V", 20:100)
df3[n] <- lapply(df3[n], sqrt)

# …
Run Code Online (Sandbox Code Playgroud)

r data.table

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

从shapefile(R)只读数据槽?

我有一些非常大的shapefile.我可以SpatialPolygonsDataFrame使用该rgdal函数将它们读入readOGR,但每个文件需要很长时间.我实际上只对插槽data.frame中显示的内容感兴趣@data.有没有办法只读取数据,跳过资源密集型多边形?

示例代码:

## State of Alabama census blocks (152 MB compressed, 266 MB uncompressed)
shpurl <- "http://www2.census.gov/geo/tiger/TIGER2011/TABBLOCK/tl_2011_01_tabblock.zip"
tmp    <- tempfile(fileext=".zip")
download.file(shpurl, destfile=tmp)
unzip(tmp, exdir=getwd())

## Read shapefile
nm  <- strsplit(basename(shpurl), "\\.")[[1]][1]
lyr <- readOGR(dsn=getwd(), layer=nm)

## Data I want
head(lyr@data)
Run Code Online (Sandbox Code Playgroud)

r geospatial shapefile rgdal

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

组合多个 ggplot2 多边形/路径

我正在使用 ggplot2 创建县级数据的等值区域图。我想强调多县地区。覆盖县地图数据子集的路径或多边形非常简单,但这会留下“内部”路径线。有没有办法将这些区域合并为一组或简单地隐藏内部线条?

require(ggplot2)
require(maps)
require(maptools)

va <- map_data("county", region="virginia")

ggplot(va, aes(long, lat)) + coord_map() + 
  geom_polygon(aes(group=group)) +
  geom_path(data=subset(va, subregion %in% c("patrick", "henry", "franklin",
    "pittsylvania")), aes(group=group), size=1, color="white")
Run Code Online (Sandbox Code Playgroud)

https://i.stack.imgur.com/BIiAG.png

编辑:上面的例子并不完全是我想要做的。下面的代码更能代表实际项目。实际的地图将比这更详细,因为它们使用人口普查区级别的数据并在顶部有地理编码点。

va <- map_data("county", region="virginia")
cty <- data.frame(subregion=unique(va$subregion))
cty$stat <- sample.int(nrow(cty))
va <- merge(va, cty, by="subregion")

p <- ggplot(va, aes(long, lat)) + coord_map() + 
  geom_polygon(aes(group=group, fill=stat), color="grey") +
  geom_path(data=subset(va, subregion %in% c("patrick", "henry", "franklin",
    "pittsylvania")), aes(group=group), size=1, color="white")
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

r ggplot2

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

标签 统计

r ×3

data.table ×1

geospatial ×1

ggplot2 ×1

rgdal ×1

shapefile ×1