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

如何在R中生成并填充DataFrame?替换循环生成的字符串列表

问题:从现有DataFrame生成结构化的排名DataFrame

我现在用这段R代码生成了字符串列表:

for (x in df){
  paste(df$name,df$state, df$outcome, sep = " | ")
}

输出的列表示例是:

[2] "DOYLESTOWN HOSPITAL | PA | 10.4"                                              
   [3] "GLENDALE ADVENTIST MEDICAL CENTER | CA | 10.5"                                
   [4] "AVERA HEART HOSPITAL OF SOUTH DAKOTA LLC | SD | 10.5"                         
   [5] "WATERBURY HOSPITAL | CT | 10.6"                                               
   [6] "MAIN LINE HOSPITAL LANKENAU | PA | 10.7" 

已知class(df)结果是"data.frame",现在不想生成字符串列表,而是要创建一个结构化的DataFrame,预期格式如下:

hospital state rank
   D W MCMILLAN MEMORIAL HOSPITAL AL   10
ARKANSAS METHODIST MEDICAL CENTER AR   14

求实现方法。


实现方法

你的需求可以直接从原DataFrame提取指定列,再做简单调整即可,无需生成字符串再反向拆分,更高效简洁:

  1. 提取并重命名列
    原DataFrame已经包含name(医院名)、state(州)、outcome(对应rank值)三列,直接选取这三列后重命名为目标格式:
# 提取目标列
result_df <- df[, c("name", "state", "outcome")]
# 重命名列
colnames(result_df) <- c("hospital", "state", "rank")
  1. 调整rank格式(可选)
    如果需要把rank的小数(如10.4)转为整数(如10),可以用以下方式处理:
# 直接截断小数转为整数
result_df$rank <- as.integer(result_df$rank)
# 或者四舍五入到整数
result_df$rank <- round(result_df$rank)
  1. 查看结果
    运行后直接打印result_df就能得到你要的结构化DataFrame:
print(result_df)

补充说明

你原来的循环属于冗余操作:paste()本身是向量化函数,不需要遍历DataFrame的列执行,重复生成了多次相同的字符串列表。直接操作DataFrame的列才是R的惯用高效写法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 23:39:20