在R语言中如何实现类似Python的字符串遍历操作?
在R语言中实现类似Python的字符串遍历操作
当然可以!R完全能复刻你在Python里做的字符串遍历与数据处理逻辑。先回顾下你给出的Python代码功能:遍历数据框的列名,提取每个列名去掉最后两位后的子串并转为整数,接着去重、排序,最终转成数组。
你的Python代码示例:
import numpy as np import pandas as pd myvector=[] for string in dataframe.columns: myvector.append(int(string[:-2])) # 删除标识符 myvector = np.array(sorted(list(set(myvector))))
下面是对应的R语言实现,我会尽量贴合你的原始逻辑:
# 假设你的数据框名为dataframe(和Python中的变量名保持一致) myvector <- c() # 遍历数据框的列名 for (string in colnames(dataframe)) { # 提取最后两位之前的子串并转为整数 num <- as.integer(substr(string, 1, nchar(string) - 2)) myvector <- c(myvector, num) } # 去重、排序后转成数组(R中的array和numpy数组概念相近,若仅需序列用vector也可) myvector <- array(sort(unique(myvector)))
如果你想更简洁高效,R里常用向量化操作替代循环(处理大量数据时速度更快),可以写成这样:
library(dplyr) # 需要先加载dplyr包,若未安装先运行install.packages("dplyr") myvector <- dataframe %>% colnames() %>% substr(1, nchar(.) - 2) %>% as.integer() %>% unique() %>% sort() %>% array()
这段简洁版的逻辑和你Python代码完全一致:
- 先获取数据框的列名
- 对每个列名截取最后两位之前的部分
- 转换为整数类型
- 去除重复值
- 按顺序排序
- 转为数组
这样就完成了和你Python代码一模一样的功能啦!
内容的提问来源于stack exchange,提问作者tfkLSTM
相关产品推荐
相关产品推荐

