我希望您能告诉我代码中的问题,而不是直接给出解决方案。我想循环遍历一些字符串,我的数据如下:
id source transaction
1 a > b 6 > 0
2 J > k 5
3 b > c 4 > 0
我有一个列表,希望遍历此列表并找到包含该元素的行,并计算平均值。
mylist <- c ("a", "b")
所以我期望列表中的一个元素的输出结果是
source avg
a 6
b 2
我不知道如何循环遍历列表并将它们发送到csv文件中。我尝试了以下代码:
mylist <- c( "a", "b" )
for(i in mylist)
{
KeepData <- df [grepl(i, df$source), ]
KeepData <- cSplit(KeepData, "transaction", ">", "long")
avg<- mean(KeepData$transactions)
result <- list(i,avg )
write.table(result ,file="C:/Users.csv", append=TRUE,sep=",",col.names=FALSE,row.names=FALSE)
}
但是以下警告信息给我返回了“NA”结果:
警告信息:1: 在 mean.default(KeepData$transactions) 中:
参数不是数字或逻辑值:返回 NA 2: 在 mean.default(KeepData$transactions) 中:
参数不是数字或逻辑值:返回 NA
for
循环的一个问题是检查cSplit
和上面的grepl
的输出。对于每个步骤使用print
,你就会明白原因了。在这里,cSplit
之后transaction
列被复制了,而且它不是transactions
。 - akrun