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

R语言如何将字符串按单字符拆分存入dataframe的独立新列

方案1:使用tidyr::separate(最简洁,适合tidyverse工作流)

直接对sequence列按字符位置拆分,不需要提前拆分出列表:

library(tidyr)
# 按每1个字符的位置拆分,生成pos1到pos8共8列
df_new <- df %>% 
  separate(sequence, into = paste0("pos", 1:8), sep = 1:7, remove = FALSE)

参数说明:

  • sep = 1:7 表示在第1、2...7个字符后拆分,刚好把8位字符串拆成8个单字符列
  • remove = FALSE 保留原始sequence列,不需要的话可以设为TRUE

方案2:基于你已有的list1快速转换

如果已经生成了拆分后的列表,直接转矩阵后绑定到原数据框即可,不需要逐列赋值:

# 把列表转成3行8列的矩阵,设置列名
pos_mat <- do.call(rbind, list1)
colnames(pos_mat) <- paste0("pos", 1:8)
# 绑定到原数据框
df_new <- cbind(df, pos_mat)

该方法运算效率极高,即使是十万行以上的数据集也能快速处理。


方案3:纯Base R实现,无需加载第三方包

# 用base::strsplit拆分字符串
split_list <- strsplit(df$sequence, "")
pos_mat <- do.call(rbind, split_list)
colnames(pos_mat) <- paste0("pos", 1:8)
df_new <- cbind(df, pos_mat)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.09 21:57:04