【发布时间】:2020-06-09 11:46:54
【问题描述】:
我有一个包含数据框的列表,每个数据框都有不同的观察结果。这是我正在使用的示例:
set.seed(9)
df<- data.frame(x1 = round(runif(80, 0, 5)),
x2 = round(runif(80, 0, 15)),
x3 = sample(letters[1:8], 80, replace = TRUE))
my.list <- vector(mode = "list", length = 8)
my.list <- lapply(unique(df$x3), function(x) {subset(df, x3 == x)})
我想要实现的是找到满足条件的每个数据框的行名。使用lapply() 最接近我想要实现的目标是使用下面的代码。但是,这会返回 NA;我不确定为什么会这样。
> lapply(my.list, function(x) {x <- row.names(x[which(x[,1:2] < 5), ]); x})[[1]]
[1] "1" "5" "11" "22" "46" "53" "61" "63" "64" "79" "80" "NA" "NA.1" "NA.2" "NA.3"
需要做什么才能只返回行名?
【问题讨论】:
-
您可以在您的代码中进行此更改,然后 na 将消失。
lapply(my.list, function(x) {x <- row.names(x[which(x[,1:2][1] < 5), ]); x})注意:我在which语句中添加了[1]