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

R语言FOR循环执行结果异常,单独运行步骤正常,求技术支持

问题原因

你循环里的list[[i]]取的是字符串"a2012"、"a2013",而非你定义的向量a2012、a2013。str_count("a2012", "al,")统计的是字符串"a2012"里"al,"的出现次数,这个字符串里根本没有"al,",所以结果为0,sum后自然也是0。

解决方案

有两种常用修正方式:

方式1:用get()函数获取变量

通过get()根据字符串名称获取对应的变量,修改循环内代码即可:

library(stringr)

# 避免用list当变量名,覆盖内置函数
name_list <- c("a2012","a2013")

a2012 <- c("al,","al,rb,","cu,pvc,")
a2013 <- c("ab,al,","al,cu,","pvc,al,")

output <- vector("integer")
for(i in seq_along(name_list))
{
  current_vec <- get(name_list[[i]])
  output[[i]] <- sum(str_count(current_vec,"al,")==1)
}
output
# [1] 2 3

方式2:直接将向量存入列表(更推荐)

不要存变量名字符串,直接把目标向量放进列表,循环时直接取列表元素:

library(stringr)

# 直接存储向量的列表
data_list <- list(
  a2012 = c("al,","al,rb,","cu,pvc,"),
  a2013 = c("ab,al,","al,cu,","pvc,al,")
)

output <- vector("integer", length(data_list))
for(i in seq_along(data_list))
{
  output[[i]] <- sum(str_count(data_list[[i]],"al,")==1)
}
output
# [1] 2 3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:01:04