使用pmax
lapply
呼叫內,無需定義set_zero_as_value
因爲pmax
做你所需要的。我們假設你的名單是:
list.DF <-list(structure(list(a = c(1L, 2L, 3L, 5L, 1L, 5L, 5L, 3L, 3L,
0L), b = c(1L, 1L, 4L, 2L, 4L, 2L, 4L, 5L, 2L, 4L), c = c(5L,
1L, 3L, 0L, 1L, 2L, 0L, 2L, 5L, 2L)), .Names = c("a", "b", "c"
), row.names = c(NA, -10L), class = "data.frame"), structure(list(
d = c(2L, 3L, 2L, 1L, 4L, 4L, 4L, 0L, 4L, 2L), e = c(4L,
3L, 4L, 3L, 3L, 4L, 0L, 2L, 4L, 4L), f = c(2L, 5L, 2L, 1L,
0L, 0L, 1L, 3L, 3L, 2L)), .Names = c("d", "e", "f"), row.names = c(NA,
-10L), class = "data.frame"))
現在應用所需的轉換:
> lapply(list.DF, function(x) sapply(x, pmax, 0.0001))
如果你想用你的set_zero_as_value
功能,然後在它的末尾添加return(x)
。
set_zero_as_value <- function(x, value=0.0001){
x[x == 0] <- value
return(x)
}
lapply(list.DF, function(x) sapply(x, set_zero_as_value))
這將產生與以前相同的結果。
你的函數需要返回'x'。 – mrip
並且(希望我不需要指出這一點),您需要將結果賦給某些東西,例如'a < - sapply(a,set_zero_as_value)' –
所以我必須分配結果?我可以簡單地修改一個,因爲如果數據幀非常大,就會有冗餘。或者我稍後再說。 – lolibility