我有这个数据集:
set.seed(123)
old <- data.frame(matrix(sample(c(1:10, NA), 35, replace = TRUE), ncol = 7, nrow = 5))
在每一行中,我想找到前 5 个非 NA 值并将它们放入新的数据框中。
我考虑过如何使用以下函数来实现这一点:
extract_non_na <- function(row) {
non_na_values <- na.omit(row)
if (length(non_na_values) < 5) {
non_na_values <- c(non_na_values, rep(NA, 5 - length(non_na_values)))
}
return(non_na_values[1:5])
}
现在的问题是如何在 R 中的行间应用此函数。我研究了这个问题,显然这是用 t 完成的?
new <- t(apply(old, 1, extract_non_na))
这是正确的协议吗?
如果您想要按行执行操作,可以使用
apply
以下方法或者,您可以尝试以下
order
+row