用两个分隔符连接矩阵行
Concatenate rows of matrix with two separators
我的目标是将坐标对矩阵转换为单个字符串,并将坐标对粘贴在一起。例如,我有一行字符串的坐标:
mat <- routes@lines[[9]]@Lines[[1]]@coords
mat
[,1] [,2]
[1,] -122.4491 37.7698
[2,] -122.4519 37.7694
[3,] -122.4491 37.7698
我想将其转换为:
"-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
其中一对的纬度和经度以逗号分隔,成对以分号分隔。
apply(format(mat), 1, paste, sep=";", collapse = "")
没有产生所需的输出。如何在 R 中做到这一点?
示例数据如下:
dput(mat)
structure(c(-122.4491, -122.4519, -122.4491, 37.7698, 37.7694,
37.7698), .Dim = c(3L, 2L))
mat <- structure(c(-122.4491, -122.4519, -122.4491, 37.7698, 37.7694, 37.7698), .Dim = c(3L, 2L))
你很接近。你使用apply
是合适的,但是因为你是先操作row-wise,所以你需要先担心一个定界问题:
apply(mat, 1, paste, collapse=",")
# [1] "-122.4491,37.7698" "-122.4519,37.7694" "-122.4491,37.7698"
... 然后将所有这些与一个外部 paste
:
结合起来
paste(apply(mat, 1, paste, collapse=","), collapse=";")
# [1] "-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
另一种选择是转换为 data.frame
然后使用 do.call
do.call(paste, c(as.data.frame(mat), collapse=";", sep=","))
#[1] "-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
mat <- structure(c(-122.4491, -122.4519, -122.4491, 37.7698, 37.7694, 37.7698), .Dim = c(3L, 2L))
这是一个矩阵,有两列坐标。一键粘贴即可。
paste(mat[,1], mat[,2], sep = ",", collapse = ";")
# [1] "-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
这里sep
设置lat和long坐标之间的分隔符(同一行的单元格),collapse
设置坐标对之间的分隔符(不同行之间的分隔符)。
我的目标是将坐标对矩阵转换为单个字符串,并将坐标对粘贴在一起。例如,我有一行字符串的坐标:
mat <- routes@lines[[9]]@Lines[[1]]@coords
mat
[,1] [,2]
[1,] -122.4491 37.7698
[2,] -122.4519 37.7694
[3,] -122.4491 37.7698
我想将其转换为:
"-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
其中一对的纬度和经度以逗号分隔,成对以分号分隔。
apply(format(mat), 1, paste, sep=";", collapse = "")
没有产生所需的输出。如何在 R 中做到这一点?
示例数据如下:
dput(mat)
structure(c(-122.4491, -122.4519, -122.4491, 37.7698, 37.7694,
37.7698), .Dim = c(3L, 2L))
mat <- structure(c(-122.4491, -122.4519, -122.4491, 37.7698, 37.7694, 37.7698), .Dim = c(3L, 2L))
你很接近。你使用apply
是合适的,但是因为你是先操作row-wise,所以你需要先担心一个定界问题:
apply(mat, 1, paste, collapse=",")
# [1] "-122.4491,37.7698" "-122.4519,37.7694" "-122.4491,37.7698"
... 然后将所有这些与一个外部 paste
:
paste(apply(mat, 1, paste, collapse=","), collapse=";")
# [1] "-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
另一种选择是转换为 data.frame
然后使用 do.call
do.call(paste, c(as.data.frame(mat), collapse=";", sep=","))
#[1] "-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
mat <- structure(c(-122.4491, -122.4519, -122.4491, 37.7698, 37.7694, 37.7698), .Dim = c(3L, 2L))
这是一个矩阵,有两列坐标。一键粘贴即可。
paste(mat[,1], mat[,2], sep = ",", collapse = ";")
# [1] "-122.4491,37.7698;-122.4519,37.7694;-122.4491,37.7698"
这里sep
设置lat和long坐标之间的分隔符(同一行的单元格),collapse
设置坐标对之间的分隔符(不同行之间的分隔符)。