Re: [問題] while loop 不知道怎麼寫
一部分原始資料
## Distance matrix #實際上有十幾個站位
COM01 AR01 PA01 PA02
COM01 0 8 112 110
AR01 8 0 118 116
PA01 112 118 0 4
PA02 110 116 4 0
## spp matrix #實際上有十萬多個物種
COM01 AR01 PA01 PA02
OTU1 7774 4 310 12
OTU2 5 0 81 9
OTU3 0 0 71 1
OTU4 1 0 0 0
把error的資訊跟traceback留在下面:
Error in dist.mat[pair[1], pair[2]] : subscript out of bounds
19.
FUN(newX[, i], ...)
18.
apply(., 2, function(pair) {
dist.mat[pair[1], pair[2]]
})
17.
function_list[[i]](value)
16.
freduce(value, `_function_list`)
15.
`_fseq`(`_lhs`)
14.
eval(expr, envir, enclos)
13.
eval(quote(`_fseq`(`_lhs`)), env, env)
12.
withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
11.
y[y != 0] %>% names(.) %>% combn(., 2) %>% apply(., 2, function(pair) {
dist.mat[pair[1], pair[2]]
}) %>% max(.)
10.
FUN(newX[, i], ...)
9.
apply(., 1, function(y) {
if (sum(y >= 2)) {
y[y != 0] %>% names(.) %>% combn(., 2) %>% apply(., 2,
function(pair) { ...
8.
function_list[[k]](value)
7.
withVisible(function_list[[k]](value))
6.
freduce(value, `_function_list`)
5.
`_fseq`(`_lhs`)
4.
eval(expr, envir, enclos)
3.
eval(quote(`_fseq`(`_lhs`)), env, env)
2.
withVisible(eval(quote(`_fseq`(`_lhs`)), env, env))
1.
OTU_location[, c("COM01", "AR01", "PA01", "PA02", "GJ01", "QK01",
"AK03", "SH01", "SI02", "TA01", "GG01", "DSZ01", "SM22",
"LGH03")] %>% as.matrix %>% apply(., 1, function(y) {
if (sum(y >= 2)) { ...
※ 引述《andrew43 (討厭有好心推文後刪文者)》之銘言:
: 大致上這樣做。
: ## site 座標
: location <-
: data.frame(
: site.name = c("site1", "site2", "site3"),
: x = c(3,1,16),
: row.names = 1
: )
: ## site 距離矩陣
: dist.mat <-
: dist(as.matrix(location)) %>%
: as.matrix
: dist.mat
: ## 各site物種出現豐度
: spp.dt <-
: data.frame(
: spp = c("A", "B"),
: site1 = c(5,4),
: site2 = c(0,7),
: site3 = c(20,2)
: )
: library(magrittr)
: spp.dt[, c("site1", "site2", "site3")] %>%
: as.matrix %>%
: apply(., 1, function(y) {
: y[y != 0] %>%
: names(.) %>%
: combn(., 2) %>%
: apply(., 2, function(pair) {
: dist.mat[pair[1], pair[2]]
: }) %>%
: max(.)
: })
: ※ 引述《lilian0330 (俐俐)》之銘言:
: : 大家好,剛開始統計軟體入門,寫過Matlab跟R
: : 但最近在處理資料常常不知道怎麼解決error...
: : [問題]
: : 要做物種出現的「最大距離」,例如有三個地點,在三個點之間有三個不相等的距離。
: : 而物種A出現在site1跟site3,所以距離就是distance(1-3)
: : 物種B出現在site1,2,3,但因為2跟3比較遠,最大距離是distance(2-3)
: : 我目前已經做出來兩兩site之間的distance matrix
: : 但是我不知道用while迴圈怎麼讓R自動判斷這個物種的「最大距離」
: : 資料形式
: : Species| site1 | site2 | site3 | max_distance
: : -------------------------------------------------------
: : A | 5 | 0 | 20 | distance(1-3)
: : B | 4 | 7 | 2 | distance(2-3)
: : 我目前想到的邏輯是
: : table[1,2]-table[1,3]!=table[1,2]|table[1,3]
: : 依序做成這個物種的「所有距離」,最後再用max()選擇「最大距離」
: : 想問問大家如果寫成while loop怎麼寫比較好呢?
: : [環境敘述]:
: : R version 3.3.2 (2016-10-31)
: : Platform: x86_64-w64-mingw32/x64 (64-bit)
: : Running under: Windows >= 8 x64 (build 9200)
: : locale:
: : [1] LC_COLLATE=Chinese (Traditional)_Taiwan.950 LC_CTYPE=Chinese
: : (Traditional)_Taiwan.950
: : [3] LC_MONETARY=Chinese (Traditional)_Taiwan.950 LC_NUMERIC=C
: : [5] LC_TIME=Chinese (Traditional)_Taiwan.950
: : attached base packages:
: : [1] stats graphics grDevices utils datasets methods base
: : other attached packages:
: : [1] sp_1.2-4 phyloseq_1.19.1 BiocInstaller_1.24.0
: : readxl_0.1.1 ggplot2_2.2.1
: : [6] vegan3d_1.0-1 vegan_2.4-2 lattice_0.20-34
: : permute_0.9-4
: : loaded via a namespace (and not attached):
: : Error in x[["Version"]] : subscript out of bounds
: : In addition: Warning messages:
: : 1: In FUN(X[[i]], ...) :
: : DESCRIPTION file of package 'Rcpp' is missing or broken
: : 2: In FUN(X[[i]], ...) :
: : DESCRIPTION file of package 'jsonlite' is missing or broken
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 140.112.69.189
※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1491327979.A.06C.html
→
04/05 05:35, , 1F
04/05 05:35, 1F
→
04/05 05:37, , 2F
04/05 05:37, 2F
→
04/05 05:38, , 3F
04/05 05:38, 3F
→
04/05 05:40, , 4F
04/05 05:40, 4F
→
04/05 05:40, , 5F
04/05 05:40, 5F
→
04/05 05:41, , 6F
04/05 05:41, 6F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
R_Language 近期熱門文章
PTT數位生活區 即時熱門文章