r - 使用 sapply 忽略列表中缺少的元素

标签 r

我在数据框中有一个列表(在本例中为df$candpct),并且希望从列表中提取第一个和第二个元素并将它们放入单独的向量中。

这是数据框的初始结构:

> head(df)
  juris                         candpct
1   101              0.752491, 0.247509
2   102 0.4856056, 0.2850754, 0.1845157
3   103                               1
4   104                               1

我看过this answer ,它向我展示了如何有效地提取第一个元素:

> df$first_place <- sapply(df$candpct,"[[",1)

> head(df)
      juris                         candpct first_place
    1   101              0.752491, 0.247509    0.752491
    2   102 0.4856056, 0.2850754, 0.1845157   0.4856056
    3   103                               1           1
    4   104                               1           1

但是,如果我尝试运行另一行来提取第二个元素,则会收到错误,因为并非所有行的第二个位置都有元素。

> df$second_place <- sapply(df$candpct,"[[",2)
Error in FUN(X[[3L]], ...) : subscript out of bounds

理想情况下,如果第二个元素丢失,我希望它用 NA0 填充 second_place 中的相应行。

我确信有多种方法可以解决这个问题,但我没有太多使用列表的经验,所以我在开始时遇到了很多麻烦。

预先感谢您的帮助。

最佳答案

只是跟进我的评论:

l <- list(a = 1,b = 1:2,c = 1:3)
> sapply(l,'[',2)
 a  b  c 
NA  2  2 

关于r - 使用 sapply 忽略列表中缺少的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10051024/

相关文章:

r - 在不使用任何包的情况下在 R 中绘制 ROC 曲线

r - 如果数据包含 NA 值,则计算余弦相似度

r - 格式打印语句

r - 每个条目选择 20 个第一行

r - do.call 和 rbind 用于以顺序作为新列名的列表

r - 频率表的累积概率图

r - 根据 R 中 bin 值的第二个向量替换值向量的有效方法

r - Rcpp 中 pow 的矢量化指数

r - optparse 在 R 脚本中生成 NULL 值

R Kaplan Meier 曲线 - 按性别和风险因素划分曲线