我想删除每行中包含" 0 "价值。
例如:在第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
<<p>reproductible数据/strong>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]]))
输出看起来像
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"