Fat*_*erg 6 loops r lapply dataframe na
如果我有一个数据框如下:
data.frame(
cola = c(3,NA,NA),
colb = c(1,NA,NA),
colc = c(NA,6,NA),
cold = c(NA,7,NA),
cole = c(NA,3,NA),
colf = c(NA,NA,9),
colg = c(NA,NA,8)
)
Run Code Online (Sandbox Code Playgroud)
如何将所有字段向左移动,根据需要消除NA值,如下所示:
data.frame(
cola = c(3,6,9),
colb = c(1,7,8),
colc = c(NA,3,NA)
)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我们循环遍历行,删除NA元素,na.omit然后NA根据最大长度追加到末尾list
lst <- apply(df1, 1, na.omit)
out <- as.data.frame(do.call(rbind, lapply(lst, `length<-`, max(lengths(lst)))))
Run Code Online (Sandbox Code Playgroud)