【发布时间】:2018-08-14 20:51:13
【问题描述】:
我有一个数据框列表。每个都有一个 ID 列,后跟多个数字列(带有列名)。
我想将所有数字列的所有 1 替换为 0,但保持 ID 列相同。我可以使用
部分使用单个数据框来完成此操作 df[,-1] <- 0
但是当我尝试将它嵌入 lapply 时,它失败了:
df2 <- lapply(df, function(x) {x[,-1] <- 0})
我尝试过使用子集、ifelse、while、mutate,但在这个简单的替换中遇到了困难。可以从头开始重新创建数据框,或者在最后重新组合 ID 列,但这让我觉得应该很容易......
测试清单:
test_list <- list(data.frame("ID"=letters[1:3], "col2"=1:3, "col3"=0:2), data.frame("ID"=letters[4:6], "col2"=4:6, "col3"=0:2))
最终结果应该是:
final_list <- list(data.frame("ID"=letters[1:3], "col2"=0, "col3"=0), data.frame("ID"=letters[4:6], "col2"=0, "col3"=0))
【问题讨论】:
-
如果您只想“将所有数字列的所有 1 替换为 0”,您可以尝试:
lapply(test_list, function(x) replace(x, x == 1, 0))