私はこのようなdata.frameに変換CSVファイル有する( - 他の無関係な列である)をR:(データフレームの一部として)リストのベクターに異なる長さのリストのリストを変異
C1 C2 C3 C4 C5 Start End C8
A 1 - - - [1,4,7] [3,6,10] -
A 2 - - - [12] [14] -
A 3 - - - [16,19] [17,21] -
A 4 - - - [22] [24] -
ここでは、StartとEndの各メンバーの間の範囲を繰り返し計算するつもりです。
Format the Start and End columns into lists
```{r}
vect <- function(fac){
str <- as.character(fac)
return(as.list(strsplit(substr(str,2,nchar(str)-1),",")))
#return(data.frame(lapply(str, `length<-`, max(lengths(str)))))
}
````
と
Read in experimental data
```{r}
data <- read.csv("elution_peptides_positions_arath.csv", sep=",",header=TRUE)
data <- mutate(data,Start=vect(Start),End=vect(End))
data$X <- NULL
```
問題があることである:
表記はRで本当に文字通りPythonではなく、評価するのに便利です。もちろん、が、私はそれを、この機能を使って試してみましたそれは列のリスト(ベクトルの代わりに)を離れて与える、私はなぜか分からない!
私はdata <- as.data.frame(lapply(data, unlist))
でベクターにリストを変換しようとすると、それはこのエラーを離れて与え
> class(data$Start)
[1] "list"
:
Error: wrong result size (35676), expected 35568 or 1
私はに関数を適用するためにそれらがベクトルである必要が最初の要素でソートしてください(次のコードが動作すると思います)。
id <- order(sapply(data$Start,function(i)i[1]))
data <- data[order(data$Start),]
が、リストの上にそうすることが、このエラーを離れています:
Error in order(data_protein$Start) :
unimplemented type 'list' in 'orderVector1'
だから私は、私は、ベクター中にその列を変換する必要があることを想定しました。
最初のエラーの原因は何ですか?どうすればそれを解決できますか?