小编Mar*_*kes的帖子

R:循环遍历data.table中的列

我想确定一个大型data.table的列类.

colClasses <- sapply(DT, FUN=function(x)class(x)[1])
Run Code Online (Sandbox Code Playgroud)

有效,但显然本地副本存储在内存中:

> memory.size()
[1] 687.59
> colClasses <- sapply(DT, class)
> memory.size()
[1] 1346.21
Run Code Online (Sandbox Code Playgroud)

循环似乎不可能,因为data.table"with = FALSE"总是产生data.table.

一种快速而又非常脏的方法是:

DT1 <- DT[1, ]
colClasses <- sapply(DT1, FUN=function(x)class(x)[1])
Run Code Online (Sandbox Code Playgroud)

最优雅,最有效的方法是什么?

r sapply data.table

10
推荐指数
1
解决办法
2813
查看次数

ggplot/mapping美国县 - R中可视化形状的问题

所以我在R中有一个名为obesity_map的数据框,它基本上给我了每个县的州,县和肥胖率.它看起来或多或少像这样:

obesity_map = data.frame(state, county, obesity_rate)
Run Code Online (Sandbox Code Playgroud)

我试图通过显示整个美国各县的各种肥胖率来在地图上想象这个:

us.state.map <- map_data('state')
head(us.state.map)
states <- levels(as.factor(us.state.map$region))
df <- data.frame(region = states, value = runif(length(states), min=0, max=100),stringsAsFactors = FALSE)

map.data <- merge(us.state.map, df, by='region', all=T)
map.data <- map.data[order(map.data$order),]
head(map.data)

map.county <- map_data('county')
county.obesity <- data.frame(region = obesity_map$state, subregion = obesity_map$county, value = obesity_map$obesity_rate)
map.county <- merge(county.obesity, map.county, all=TRUE)
ggplot(map.county, aes(x = long, y = lat, group=group, fill=as.factor(value))) + geom_polygon(colour = "white", size = 0.1)
Run Code Online (Sandbox Code Playgroud)

它基本上创建了一个如下所示的图像:

IMG

正如你所看到的,美国被划分为奇怪的形状,颜色不是一致的颜色,在不同的渐变中,你不能从中获得很多.但我真正想要的是下面的内容,但每个县都填写:

IMG2

我对此很新,所以我很感激所有的帮助!


编辑:

这是dput的输出:

dput(obesity_map)
Run Code Online (Sandbox Code Playgroud)

结构(列表(X = 1:3141,FIPS …

r ggplot2 tmap

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

删除函数内的data.table列

我有以下示例:

irisDT <- as.data.table(iris)

mod <- function(dat) {
  dat[, index:=(1:nrow(dat))]
  setkey(dat, index)

  dat <- dat[2:10]

  dat[, index:=NULL]
  invisible()
}

mod(irisDT)
names(irisDT) # it contains index
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,在调用mod() 函数后索引列仍然存在.删除该行时不是这种情况dat <- dat[2:10].我想,由于行无法通过引用删除,因此创建了另一个data.table.但是,我想删除原始data.table中的索引列.

r dataframe data.table

6
推荐指数
1
解决办法
501
查看次数

R:如何删除data.table中的列?

关于R包data.table的问题:如何以高效内存的方式删除多个data.table列?

假设要删除的列名存储在vector deleteCol中.

In a data.frame, it is:
DF <- DF[deleteCol] <- list()
Run Code Online (Sandbox Code Playgroud)

对于data.table,我试过:

DT[, deleteCol, with=FALSE] <- list()
Run Code Online (Sandbox Code Playgroud)

但这给了 unused argument(s) (with = FALSE)

r data.table

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

标签 统计

r ×4

data.table ×3

dataframe ×1

ggplot2 ×1

sapply ×1

tmap ×1