r-RStudio:为点击流分析创建列表

  • 本文关键字:创建 列表 r-RStudio r list
  • 更新时间 :
  • 英文 :


我试图创建一个列表,每个会话一行,没有NA,每次点击一个元素,以应用点击流分析(马尔可夫链(。让我们假设我们有以下矩阵:

> sessions = rbind(c(1:3,NA,NA), c(1:2,NA,NA,NA), c(1:5))
> sessions
[,1] [,2] [,3] [,4] [,5]
[1,]    1    2    3   NA   NA
[2,]    1    2   NA   NA   NA
[3,]    1    2    3    4    5

我的目标是创建矩阵外的";会话">一个列表没有NA,看起来像这样:

$Session1
[1] "1" "2" "3"
$Session2
[1] "1" "2"
$Session3
[1] "1" "2" "3" "4" "5"

由于我是R的新手,我不知道如何管理它。你有什么想法吗?如果有任何提示,我将非常高兴!

您可以使用split

res <- lapply(split(sessions, seq(nrow(sessions))), 
function(x) as.numeric(na.omit(x)))
res
#$`1`
#[1] 1 2 3
#$`2`
#[1] 1 2
#$`3`
#[1] 1 2 3 4 5

asplit-

res <- lapply(asplit(sessions, 1), function(x) x[!is.na(x)])

要命名列表,可以使用-

names(res) <- paste0('session', seq_along(res))

我们可以在这里使用apply(在R 4.1.0上测试(

apply(sessions, 1, (x) x[complete.cases(x)])
[[1]]
[1] 1 2 3
[[2]]
[1] 1 2
[[3]]
[1] 1 2 3 4 5

也许你可以试试na.omit

> apply(sessions, 1, na.omit)
[[1]]
[1] 1 2 3
attr(,"na.action")
[1] 4 5
attr(,"class")
[1] "omit"
[[2]]
[1] 1 2
attr(,"na.action")
[1] 3 4 5
attr(,"class")
[1] "omit"
[[3]]
[1] 1 2 3 4 5

最新更新