簡體   English   中英

按值過濾r數據框的行和列名稱

[英]Filter r dataframe for row and column names by value

后續問題:我正在以閃亮的方式構建動態UI,並希望可能的選擇取決於先前的選擇。 我過濾數據集

df <- read.table(text = "  a b c d
                 X 1 1 1 0 
                 Y 1 0 0 0 
                 Z 0 1 0 0 ", header = T)

我可以創建一個所有行和列名稱的列表,其中至少一個元素> 0

col <- names(which(colSums(df == 1) > 0))
row <- names(which(rowSums(df == 1) > 0))
col_row <- c(col,row)

現在,用戶選擇col_row的元素。 我想做的下一件事是讀取特定選擇的行/列名稱。

2例

  1. 用戶選擇a 現在我想從df $ a中讀取df $ a中所有值為1的行名
  2. 用戶選擇X 我想要所有X行中的值為1的列名

不是最漂亮的解決方案,但可以。

df <- read.table(text = "  a b c d
                 X 1 1 1 0 
                 Y 1 0 0 0 
                 Z 0 1 0 0 ", header = T)

#   a b c d
# X 1 1 1 0
# Y 1 0 0 0
# Z 0 1 0 0

col <- names(which(colSums(df == 1) > 0))
row <- names(which(rowSums(df == 1) > 0))

choice <- "c"

if (choice %in% col) {
  rownames(df[df[choice] == 1, ])
} else if (choice %in% row) {
  colnames(df)[df[choice, ] == 1]
}

嘗試

row.names(df)[df[,col_row=="a"]==1]
#[1] "X" "Y"

d1 <- df[intersect(col_row, "X"),]==1
colnames(d1)[d1]
#[1] "a" "b" "c"

暫無
暫無

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

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