R中字符串分割函数(strsplit)中的非字符参数

34

这个有效

x <- "0.466:1.187:2.216:1.196"
y <- as.numeric(unlist(strsplit(x, ":")))

blat$LRwAvg 的所有值看起来都像上面的 X,但这并不起作用。

for (i in 1:50){
  y <- as.numeric(unlist(strsplit(blat$LRwAvg[i], "\\:")))
  blat$meanLRwAvg[i]=mean(y)
}

由于:

Error in strsplit(blat$LRwAvg[i], "\:") : non-character argument

无论我有一个、两个或者没有反斜线都没有关系。

我的问题是什么?(不是一般性的问题,我是指在这个特殊任务中,从技术角度来说)


4
@AWE 这是一个错误类型。将参数强制转换为字符型,as.character(blat$LRwAvg) - agstudy
1
@alexwhan 我注意到这一点,所以我删除了我的评论,但不够快:$。看起来它是一个因素的问题。像 @agstudy 建议的那样强制转换为字符,或者在创建数据框时使用 stringsAsFactors=FALSE - James
@alexwhan,class(blat $ LRwAvg)= factor,@agstudy,blat $ LRwAvg <- as.character(blat $ LRwAvg)在循环之前修复了它! - AWE
@AWE 你可以回答并接受自己的问题。 - Paul Hiemstra
难道让agstudy回答这个问题然后我接受不是更合适吗? - AWE
显示剩余2条评论
1个回答

37

正如agstudy所暗示的那样,在循环修复之前,blat$LRwAvg <- as.character(blat$LRwAvg)

blat$meanLRwAvg <- blat$gtFrqAvg #or some other variable in data frame with equal length
blat$LRwAvg <- as.character(blat$LRwAvg)
for (i in 1:50){
  y <- as.numeric(unlist(strsplit(blat$LRwAvg[i], "\\:")))
  blat$meanLRwAvg[i]=mean(y)
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接