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

如何将R语言字符向量拆分后转换为DataFrame的多列?

解决字符向量拆分并转换为DataFrame的问题

改进你的循环方法

你可以在循环中把拆分后的结果转成单行数据框,再通过rbind()合并到初始的空DataFrame中:

# 定义原始字符向量
qwerty <- c("S01_28819_W0D0_Unpr", "S01_28819_W0D1_Unpr", "S01_28819_W0D3_Unpr")
# 初始化空DataFrame
df <- data.frame(admin=character(), type=character(), time=character(), cond=character(), stringsAsFactors=FALSE)

for (i in qwerty) {
    # 拆分当前元素
    split_i <- unlist(strsplit(i, "_"))
    # 将拆分结果转为单行数据框,列名与目标结构对应
    new_row <- data.frame(
        admin = split_i[1],
        type = split_i[2],
        time = split_i[3],
        cond = split_i[4],
        stringsAsFactors = FALSE
    )
    # 合并到主DataFrame
    df <- rbind(df, new_row)
}

# 查看结果
df

更高效的基础R方法

循环rbind()在数据量大时效率较低,推荐用向量化操作实现:

qwerty <- c("S01_28819_W0D0_Unpr", "S01_28819_W0D1_Unpr", "S01_28819_W0D3_Unpr")
# 拆分每个元素得到列表
split_list <- strsplit(qwerty, "_")
# 将列表转为矩阵(每行对应一个元素的拆分结果)
split_matrix <- do.call(rbind, split_list)
# 转换为DataFrame并指定列名
df <- data.frame(
    admin = split_matrix[,1],
    type = split_matrix[,2],
    time = split_matrix[,3],
    cond = split_matrix[,4],
    stringsAsFactors = FALSE
)

df

tidyverse 简洁实现

如果习惯使用tidyverse工具链,separate()函数可以一步完成拆分和列分配:

# 先安装并加载tidyverse(首次使用需安装)
# install.packages("tidyverse")
library(tidyverse)

qwerty <- c("S01_28819_W0D0_Unpr", "S01_28819_W0D1_Unpr", "S01_28819_W0D3_Unpr")
# 将向量转为tibble,再拆分指定列到目标列中
df <- tibble(raw_value = qwerty) %>%
    separate(raw_value, into = c("admin", "type", "time", "cond"), sep = "_")

df

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 02:35:07