簡體   English   中英

從矩陣中提取觀察

[英]Extract Observation from a Matrix

我有一個矩陣(見上文)。 我有一排植物的物種和亞種的名稱。

我想生成只有物種的相同矩陣和只有亞種的矩陣。

我的初始矩陣中的物種由一個詞( abeliaabis )組成,而亞種總是包含兩個詞( abies alba等)。

我怎么能在 R 中做到這一點?

假設矩陣被稱為m ,你可以試試這個:

species_rows <- lengths(strsplit(rownames(m)," "))==1 #split the rownames at whitespaces, retain only rows that are not split (vector of length 1).
species_mat <- m[species_rows,] #logical subsetting
subspecies_mat <- m[!species_rows,] #logical subsetting with negation

@akrun 的帽子提示指出lapply(..,length)可以替換為lapply(..,length) lengths()


或者更簡單:

species_rows <- !grepl(" ",rownames(m)) # does the row.name NOT contain a whitespace? (TRUE / FALSE)
species_mat <- m[species_rows,]
subspecies_mat <- m[!species_rows,]

歡迎來到 SO,正如建議的那樣,如果您為您的問題提供示例數據,那就太好了。

也就是說,我認為你可以這樣做:

# First, generate data:
a <- matrix(sample(c(0, 1), 20), ncol = 4)
rownames(a) <- c("abies", 
                 "abies alba", 
                 "abies amabilis", 
                 "abies balsamea", 
                 "abies concolor")

然后,您可以使用grep查找哪些名稱包含空格:

sp <- grep(" ", rownames(a))

最后,分配給新矩陣:

subspecies <- a[sp,]
species <- a[-sp,]

作為旁注,我建議使用數據框而不是矩陣,並將名稱分配給變量,而不是行名稱。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM