如何获得矩阵中所有列表元素的第一个元素

时间:2019-02-14 09:38:33

标签: r list

我有这个数据集

my_coords <- structure(list(50.7642396, 6.0932425, 50.7289167, 6.1779893, 
    50.7559189, 6.1466953, 50.7980556, 6.0602183, 50.7744281, 
    6.0836151, 50.7743273, 6.1065564, c(50.764164, 50.7689394
    ), c(6.0620818, 6.0684758)), .Dim = c(2L, 7L), .Dimnames = list(
    c("lat", "lng"), NULL))

如下所示:

    [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]     
lat 50.76424 50.72892 50.75592 50.79806 50.77443 50.77433 Numeric,2
lng 6.093242 6.177989 6.146695 6.060218 6.083615 6.106556 Numeric,2

在第7列中,我有非常相似的值,我只想获取其中一个。最好是第一个。

如何通过通用方式做到这一点?

我尝试了lapply(my_coords , "[[", 1)。但是,这不是我想要的。我可以手动将这些值放在一起,但是必须有一种更聪明的方法

所需的输出是:

    [,1]     [,2]     [,3]     [,4]     [,5]     [,6]     [,7]    
lat 50.76424 50.72892 50.75592 50.79806 50.77443 50.77433 50.76416
lng 6.093242 6.177989 6.146695 6.060218 6.083615 6.106556 6.062082

1 个答案:

答案 0 :(得分:3)

您可以使用sapply(类似于您尝试的方法)提取这些值,然后将输出包装在matrix

matrix(
  sapply(my_coords , "[[", 1),
  nrow = dim(my_coords)[1],
  dimnames = dimnames(my_coords)
)
#         [,1]      [,2]      [,3]      [,4]      [,5]      [,6]      [,7]
#lat 50.764240 50.728917 50.755919 50.798056 50.774428 50.774327 50.764164
#lng  6.093242  6.177989  6.146695  6.060218  6.083615  6.106556  6.062082

@RonakShah在评论中提到的另一个选项是

my_coords[] <- sapply(my_coords , "[[", 1)