我有一点坚果要破解。
我有一个data.frame这样的:
group criterium
1 A NA
2 A TRUE
3 A TRUE
4 A TRUE
5 A FALSE
6 A FALSE
7 A TRUE
8 A TRUE
9 A FALSE
10 A TRUE
11 A TRUE
12 A TRUE
13 B NA
14 B FALSE
15 B TRUE
16 B TRUE
17 B TRUE
18 B FALSE
structure(list(group = structure(c(1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L), …Run Code Online (Sandbox Code Playgroud) 我有一个data.frame这样的:
value condition
1 0.46 value > 0.5
2 0.96 value == 0.79
3 0.45 value <= 0.65
4 0.68 value == 0.88
5 0.57 value < 0.9
6 0.10 value > 0.01
7 0.90 value >= 0.6
8 0.25 value < 0.91
9 0.04 value > 0.2
structure(list(value = c(0.46, 0.96, 0.45, 0.68, 0.57, 0.1, 0.9,
0.25, 0.04), condition = c("value > 0.5", "value == 0.79", "value <= 0.65",
"value == 0.88", "value < 0.9", "value > …Run Code Online (Sandbox Code Playgroud) 当我命名向量的元素时,我使用标签-值对,如下所示:
myvec <- c("name1" = 1, "name2" = 2, "name3" = 3)
> myvec
name1 name2 name3
1 2 3
Run Code Online (Sandbox Code Playgroud)
当我创建一个包含名称的向量并从 c() 函数内部索引该向量时,它不起作用。
namevec <- c("name1", "name2", "name3")
myvec <- c(namevec[1] = 1, namevec[2] = 2, namevec[3] = 3)
Error: unexpected '=' in "myvec <- c(namevec[1] ="
Run Code Online (Sandbox Code Playgroud)
我现在的问题是:这是为什么?为什么如果我写它可以工作"name1",但如果我使用namevec[1]它返回"name1",它会抛出错误?
注意:我并不是要求解决方法。解决方法有很多,例如:
"names<-"(c(1,2,3), namevec)
name1 name2 name3
1 2 3
setNames(c(1,2,3), namevec)
name1 name2 name3
1 2 3
structure(c(1,2,3), .Names = namevec)
name1 name2 name3
1 2 …Run Code Online (Sandbox Code Playgroud) 我想apply()用一个purrr函数替换(及其派生)。
我有一个像这样的data.frame:
> df
V1 V2 V3
1 NA 2 3
2 2 NA 3
3 3 3 NA
Run Code Online (Sandbox Code Playgroud)
我想逐行应用两个函数:min(x, na.rm = T)和,which.min(x)然后将结果作为数据帧返回。
如果我知道有多少列,我可以这样做:
pmap_dfr(df, function(V1, V2, V3) {data.frame(min = pmin(V1, V2, V3, na.rm = T),
where = which.min(c(V1, V2, V3)))})
min where
1 2 2
2 2 1
3 3 1
Run Code Online (Sandbox Code Playgroud)
我该如何使pmap()或其他任何purrr函数像将整行一样作为参数apply()?
func <- function(x) {data.frame(min = min(x, na.rm = T), where = which.min(x))}
> …Run Code Online (Sandbox Code Playgroud) 我shapefile从data.gov下载了县。我可以在传单中使用它们,如下所示来绘制 WA、ID 和 OR 中的县。我想让州边界更厚。我怎样才能做到这一点?
counties <- readOGR(paste0(dir, "/tl_2017_us_county.shp"),
layer = "tl_2017_us_county", GDAL1_integer64_policy = TRUE)
counties <- counties[counties@data$STATEFP %in% c("16", "41", "53"), ]
counties <- subset(counties, STATEFP %in% c("16", "41", "53") )
counties <- rmapshaper::ms_simplify(counties)
counties %>%
leaflet() %>%
setView(lng = -118.4942, lat = 47.2149, zoom = 5) %>%
addPolygons( fillColor = "green", fillOpacity = 0.5,
color = "black", opacity = 1.0, weight = .6, smoothFactor = 0.5,
highlightOptions = highlightOptions(color="white", weight=2, bringToFront = TRUE),
label= …Run Code Online (Sandbox Code Playgroud) 我有一个棘手的问题。
我正在尝试将一些数据可视化为一种“漂亮”的元数据浏览器。它是以下格式的基本点数据:
> print(tempdata[1:5, ])
Station Lat_dec Long_dec Surface_T
1 247 50.33445 -2.240283 15.19
2 245 50.58483 -2.535217 14.11
3 239 50.16883 -2.509250 15.41
4 225 50.32848 -2.765967 15.34
5 229 50.63900 -2.964800 14.09
Run Code Online (Sandbox Code Playgroud)
我可以使用 Lat、Long 和 Temp 创建以下 voronoi 多边形,并使用一个简单的框来裁剪它们,以免它们永远延伸。
# Creating Stations
stations <- st_as_sf(df,
coords = c("Long_dec","Lat_dec")
)
# Create voronoi/thiessen polygons
v <- stations %>%
st_union() %>%
st_voronoi() %>%
st_collection_extract()
# Creating boundary box
box <- st_bbox(stations) %>%
st_as_sfc()
# Clipping voronoi to boundary box
hmm …Run Code Online (Sandbox Code Playgroud) 我正在尝试从主向量创建子向量。每个子向量将由主向量中的下一个后续值组成。
我正在尝试避免循环。x是输入,我希望输出为vec_1,vec_2依此类推。
x<-c(23,45,32,45,1,67,89,92,101,5,63,42,65)
vec_1 <- c(23,45)
vec_2 <- c(23,45,32)
vec_3 <- c(23,45,32,45)
vec_4 <- c(23,45,32,45,1)
Run Code Online (Sandbox Code Playgroud)
我试图以此方式生成带有索引的字符串向量。我无法将字符串从say转换"1:5"为c(1:5)。
x<-c(23,45,32,45,1,67,89,92,101,5,63,42,65)
a<-paste("1:",c(5:length(x)),sep="")
x[as.integer(a[1])] ###This does not work
Run Code Online (Sandbox Code Playgroud)