我正在编写一个实用函数来进行一些数据格式转换,但我无法正确说明它,以便它适用于我希望它适用的数据,并返回正确形状的结果。
我有一个名为 HiRawTiny 的测试数据集,下面展示了 str。V1中的数据是char。我有一个名为 GetRank 的测试函数,它的工作是将所有字符放在“:”右侧并将它们强制转换为数字。这也在下面得到证明。我在 fn 中用于获取 strsplit 输出的列表语法列表对我来说有点不透明,坦率地说,我是通过反复试验得出的,但在传递单个值时它似乎工作正常。但是当我向它传递一个向量(一个数据框列)时,它并没有给我一个与我传递给它的向量长度相同的向量结果,而只是一个值。
我应该怎么做才能解决这个问题?我是 R 新手(尽管我在几十年前曾经使用过 S),并且怀疑我陷入了语法混乱。鉴于我正在尝试做的事情,我的函数语法是否错误?我应该考虑使用“应用”或其朋友之一来做到这一点吗?或者 fn 是否应该能够本地处理矢量输入/矢量输出?
str(HiRawTiny)
>'data.frame': 10 obs. of 7 variables:
>$ V1: chr "RANK:1" "RANK:2" "RANK:3" "RANK:4" ...
$ V2: chr
> "SOURCEID:CWC02001632398F4C" "SOURCEID:CWC020000F0D57DD6"
> "SOURCEID:CWC0200214C29872E" "SOURCEID:CWC0200163206B9F2" ...
$ V3:
> chr "TIME:01:04:2012-22:23:58" "TIME:01:04:2012-12:07:55"
> "TIME:01:04:2012-12:39:51" "TIME:02:04:2012-07:18:25" ...
$ V4: chr
> "SCORE:3142" "SCORE:3040" "SCORE:2911" "SCORE:2882" ...
$ V5: chr
> "TIEBREAK:4923864" "TIEBREAK:5787094" "TIEBREAK:766764"
> "TIEBREAK:1872936" ...
$ V6: chr "" "" "" "" ...
$ V7: chr "" ""
> "" "" ...
GetRank function(x) {as.numeric(strsplit(x, split=":")[[1]][2]) }
GetRank(HiRawTiny[1,1]) [1] 1
GetRank(HiRawTiny[2,1]) [1] 2
GetRank(HiRawTiny[,1]) [1] 1
#"What I want is a vector of GetRank being applied to all of column 1