You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何基于其他列条件为dataframe新增指定规则的向量列

R 实现数据框新增指定规则的material列

实现逻辑

按照需求逐行处理即可:

  • 为每一行生成长度固定为10的向量
  • 若该行tile_type_index值不为10,向量中索引值等于tile_type_index的位置赋值1000,其余位置为0
  • 若该行tile_type_index值为10,向量所有位置均为0
  • 最终将向量拼接为逗号分隔的字符串,和预期展示格式一致

可直接运行的代码

# 初始化示例数据框
df<-structure(list(hex = 1:6, tile_type_index = c(9L, 10L, 5L, 9L, 
3L, 2L)), class = "data.frame", row.names = c(NA, -6L))

# 生成material列
df$material <- sapply(df$tile_type_index, function(idx) {
  # 按规则生成长度为10的数值向量
  val_vec <- if (idx == 10) {
    rep(0, 10)
  } else {
    as.integer(1:10 == idx) * 1000
  }
  # 拼接为逗号分隔字符串,匹配预期输出格式
  paste(val_vec, collapse = ", ")
})

运行结果

执行代码后打印df,输出完全匹配预期:

hex tile_type_index                          material
1   1               9 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0
2   2              10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
3   3               5 0, 0, 0, 0, 1000, 0, 0, 0, 0, 0
4   4               9 0, 0, 0, 0, 0, 0, 0, 0, 1000, 0
5   5               3 0, 0, 1000, 0, 0, 0, 0, 0, 0, 0
6   6               2 0, 1000, 0, 0, 0, 0, 0, 0, 0, 0

如果你需要material列直接存储数值向量而非字符串,删除代码中paste拼接的步骤,直接将val_vec作为返回值即可,此时该列会转为列表类型,每个元素对应一个长度为10的数值向量。


内容的提问来源于stack exchange,提问作者locket

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 07:09:18