[英]How to conditionally remove columns in r?
我想為每一行刪除具有“o”值的列。
例如:在第 3 行中,刪除第一列和第三列,並保留第二列的名稱不變。
> stocks_grid2
Var1 Var2 Var3
1 o o o
2 Var1 o o
3 o Var2 o
4 Var1 Var2 o
5 o o Var3
6 Var1 o Var3
7 o Var2 Var3
8 Var1 Var2 Var3
可復制的數據
n_s <- 3
l_s <- rep(list(0:1), n_s)
stocks_grid2 <- expand.grid(l_s)
stocks_grid2[-1] <- lapply(seq_along(stocks_grid2)[-1], function(x) ifelse(stocks_grid2[[x]] == 1, names(stocks_grid2)[x], stocks_grid2[[x]]))
stocks_grid2[1] <- lapply(seq_along(stocks_grid2)[1], function(x) ifelse(stocks_grid2[[x]] == 1, names(stocks_grid2)[x], stocks_grid2[[x]]))
stocks_grid2[-1] <- lapply(seq_along(stocks_grid2)[-1], function(x) ifelse(stocks_grid2[[x]] == 0, "o", stocks_grid2[[x]]))
stocks_grid2[1] <- lapply(seq_along(stocks_grid2)[1], function(x) ifelse(stocks_grid2[[x]] == 0, "o", stocks_grid2[[x]]))
output 看起來像
Var2
3 Var2
對於每一行
該問題的總體目標尚不清楚,但假設您在循環中應用一些代碼,您可以嘗試 -
for(i in seq(nrow(stocks_grid2))) {
row <- stocks_grid2[i, ]
result <- row[row != 'o']
#Use `result` for further processing if needed.
print(result)
}
#character(0)
#[1] "Var1"
#[1] "Var2"
#[1] "Var1" "Var2"
#[1] "Var3"
#[1] "Var1" "Var3"
#[1] "Var2" "Var3"
#[1] "Var1" "Var2" "Var3"
我不確定,但這是你想要的嗎?
apply(df, 1, function(x) {
x[x!= "o"]
})
結果:
[[1]]
named character(0)
[[2]]
Var1
"Var1"
[[3]]
Var2
"Var2"
[[4]]
Var1 Var2
"Var1" "Var2"
[[5]]
Var3
"Var3"
[[6]]
Var1 Var3
"Var1" "Var3"
[[7]]
Var2 Var3
"Var2" "Var3"
[[8]]
Var1 Var2 Var3
"Var1" "Var2" "Var3"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.