我有以下数据帧df:

           adj_coords
1    2, 3, 4, 5, 6, 7
2   1, 3, 7, 8, 9, 10
3 1, 2, 4, 10, 11, 12
4 1, 3, 5, 12, 13, 14
5 1, 4, 6, 14, 15, 16
6 1, 5, 7, 16, 17, 18
                             adj_coords_material_amounts
1     0.0000, 0.0000, 0.0000, 0.0000, 632.6667, 264.3333
2 263.0000, 0.0000, 264.3333, 262.6667, 0.0000, 238.6667
3   263.0000, 0.0000, 0.0000, 238.6667, 0.0000, 298.3333
4 263.0000, 0.0000, 0.0000, 298.3333, 300.6667, 279.3333
5 263.0000, 0.0000, 632.6667, 279.3333, 0.0000, 273.3333
6   263.0000, 0.0000, 264.3333, 273.3333, 0.0000, 0.0000


df<-structure(list(adj_coords = list(2:7, c(1L, 3L, 7L, 8L, 9L, 10L
), c(1L, 2L, 4L, 10L, 11L, 12L), c(1L, 3L, 5L, 12L, 13L, 14L), 
    c(1L, 4L, 6L, 14L, 15L, 16L), c(1L, 5L, 7L, 16L, 17L, 18L
    )), adj_coords_material_amounts = list(c(0, 0, 0, 0, 632.666666666666, 
264.333333333334), c(263, 0, 264.333333333334, 262.666666666667, 
0, 238.666666666667), c(263, 0, 0, 238.666666666667, 0, 298.333333333333
), c(263, 0, 0, 298.333333333333, 300.666666666667, 279.333333333334
), c(263, 0, 632.666666666666, 279.333333333334, 0, 273.333333333334
), c(263, 0, 264.333333333334, 273.333333333334, 0, 0))), row.names = c(NA, 
6L), class = "data.frame")

我想从每行adj\u坐标中抽取一个元素,但仅当adj\u坐标中的对应元素material\u amounts为&gt;0

推荐答案

使用mapplysampleadj_coordsadj_coords__material_amounts的每个配对集上循环一个值, Select >;0

##set.seed(1)
mapply(
    \(co,ma) sample(co[ma > 0], 1),
    df[["adj_coords"]], df[["adj_coords_material_amounts"]]
)
#[1]  6 10 12  1  6  1

R相关问答推荐

如何直接从R中的风险分数计算c指数?

使用整齐的计算(curl -curl )和杂音

提取一个列表中单个列的重复观察结果R

如何在R库GoogleDrive中完全删除预先授权的Google帐户?

R-按最接近午夜的时间进行筛选

WRS2包中带有bwtrim的简单ANOVA抛出错误

如何计算每12行的平均数?

数值型数据与字符混合时如何进行绑定

快速合并R内的值

如何在GALT包的函数&geom_x样条线中调整线宽

按镜像列值自定义行顺序

如何在R中创建这些列?

使用dqur在不同变量上创建具有多个条件的变量

是什么打破了此Quarto仪表板中的工具提示?

组合名称具有模式的列表的元素

在不带max()的data.table中按组查找最后一个元素

如何计算多个变量的百分比与总和的百分比?

真实世界坐标的逆st_变换

如何将数据框压缩为更宽,同时将行输入保持为行输入,而不是R中的列名?

通过对列进行分组将数据帧拆分为多个数据帧