【问题标题】:r matrix columns filling incorrectlyr 矩阵列填充不正确
【发布时间】:2017-07-13 15:06:33
【问题描述】:

尝试将数据集 (sdevDFC) 重新组织成一个矩阵,其中我的纬度 (Lat) 作为行名,经度 (Lon) 作为列名,然后用与坐标相关的值填充矩阵。

stand_dev_m <- matrix(data=sdevDFC$SDev, nrow=length(sdevDFC$Lat), ncol=length(sdevDFC$Lon), byrow=TRUE, dimnames = list(sdevDFC$Lat, sdevDFC$Lon))

列名和行名按应有的方式显示,但我的数据会填充,以便它们各自列中的所有值都相同,如 image(不应该是这种情况,因为我的价值观从来没有重复过)。

我已经用 byrow = FALSE 填充它以查看它是否也发生过(确实发生了),并且我还使用了 colnames 和 rownames 而不是 dimnames(没有任何改变)。

如果我在这里可能做错了什么,我将不胜感激——这也是这个平台的新手,所以如果我错过了指南或其他类似的问题,我深表歉意

【问题讨论】:

  • 这是因为您的数据框有n 行(length(sdevDFC$Lat) 等),因此您只给它n 数据值(来自同一数据框),因此重复填充n x n网格。
  • 嗨@STK,如果我的回答有助于解决您的问题,请考虑通过单击左侧的复选标记来接受它作为答案。这让社区知道它有效。

标签: r matrix


【解决方案1】:

示例数据:

df <- data.frame(LON=1:5,
                 LAT=11:15,
                 VAL=letters[1:5],
                 stringsAsFactors=F)

您可以尝试以下方法:

rn <- df$LON            # Save what-will-be-rownames
df1 <- df %>% 
         spread(LAT,VAL,fill=NA) %>%
         select(-LON) %>%
         setNames(., df$LAT)
rownames(df1) <- rn

输出

    11   12   13   14   15
1    a <NA> <NA> <NA> <NA>
2 <NA>    b <NA> <NA> <NA>
3 <NA> <NA>    c <NA> <NA>
4 <NA> <NA> <NA>    d <NA>
5 <NA> <NA> <NA> <NA>    e

【讨论】:

    猜你喜欢
    • 2021-08-21
    • 1970-01-01
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2014-07-28
    • 2014-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多