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

Posted

技术标签:

【中文标题】R字符串拆分函数(strsplit)中的非字符参数【英文标题】:Non character argument in R string split function (strsplit) 【发布时间】:2013-03-04 00:38:09 【问题描述】:

这行得通

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)

因为:

strsplit(blat$LRwAvg[i], "\:") 中的错误:非字符参数

我有一个、两个或空反斜杠都没关系。

我的问题是什么? (一般来说,我的意思是在这项特殊任务中,技术上)

【问题讨论】:

class(blat$LRwAvg) 的输出是什么,能否给我们一些来自blat$LRwAvg 的数据 @AWE 是错误类型。将参数强制转换为 character ,as.character(blat$LRwAvg) @alexwhan 我注意到这样删除了我的评论,但不够快:$。看起来是因素的问题。因此,按照@agstudy 的建议强制转换字符,或者在创建 data.frame 时使用stringsAsFactors=FALSE @alexwhan, class(blat$LRwAvg) = factor, @agstudy, blat$LRwAvg &lt;- as.character(blat$LRwAvg) 在循环修复之前! @AWE 你可以回答并接受你自己的问题。 【参考方案1】:

正如 agstudy 在循环修复之前暗示 blat$LRwAvg &lt;- 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)

【讨论】:

以上是关于R字符串拆分函数(strsplit)中的非字符参数的主要内容,如果未能解决你的问题,请参考以下文章