strsplit()の結果に応じてデータフレームの列でstrsplit()を呼び出すと、結果として1つまたは2つの「サブリスト」が取得されることがあります分割の例えば、リスト内の可変長リストにアクセスする方法R
v <- c("50", "1 h 30 ", "1 h", NA)
split <- strsplit(v, "h")
[[1]]
[1] "50"
[[2]]
[1] "1" " 30"
[[3]]
[1] "1 "
[[4]]
[1] NA
は、私が「[]」を使用して、スプリットの個々のリストにアクセスすることができます知っていると「[[]]」私にこれらのサブリストの内容を伝えますので、私は、私はそれを理解すると思います。そして私は分割[2] [2]をすることで[30]の "30"にアクセスすることができます。
残念ながら、私はこのプログラムに、私が持っている列全体にアクセスする方法がわかりません。列を数値データに変換しようとしています。しかし、その "1時間30"のケースは私に多くのトラブルを与えている。
func1 <- function(x){
split.l <- strsplit(x, "h")
len <- lapply(split.l, length)
total <- ifelse(len == 2, as.numeric(split.l[2]) + as.numeric(split.l[1]) * 60, as.numeric(split.l[2]))
return(total)
}
v <- ifelse(grepl("h", v), func1(v), as.numeric(v))
私が知っているのは、分割の長さのベクトルを返します。しかし、実際に個々のサブリストの2番目の要素に実際にアクセスする場合、私は単にそれを正しく行う方法を知らないだけです。 split.l [1]とsplit.l [2]は、元のデータフレーム列全体の最初の2つの要素のみを返すため、エラーが発生します。 [[1]]と[[2]]はどちらも動作しません。私は[1] [1] [2]のようなものが必要です。しかし、私はforループを使用せず、反復しようとしています。
長い話を短くするために、私は参考のために、プログラム
内側のリストの要素にアクセスしますどのように、私が助けたこれを見ました。しかし、私はまだそれを解決することができませんでした。 apply strsplit to specific column in a data.frame
私は本当にRでリストとリスト処理に苦労していますので、何か助けに感謝します。