我试图通过应用共享函数找出一种优雅的方法来使用:=赋值来一次替换多列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) 我有一些非常大的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) 我正在使用 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)
