R 使用单独列中的值将函数应用于列表中的列
我试图对二维数据列表应用一个函数 我正在处理的数据是从许多探测器中随时间进行测量的。我将时间索引应用于矩阵,该矩阵在探针更改时重置 我通过将列表转换为单个数据帧实现了这一点,但是,随着数据集的增长,我希望使用lappy()家族中的一些东西来实现这一点 这是一种单独的矩阵方法:R 使用单独列中的值将函数应用于列表中的列,r,list,lapply,R,List,Lapply,我试图对二维数据列表应用一个函数 我正在处理的数据是从许多探测器中随时间进行测量的。我将时间索引应用于矩阵,该矩阵在探针更改时重置 我通过将列表转换为单个数据帧实现了这一点,但是,随着数据集的增长,我希望使用lappy()家族中的一些东西来实现这一点 这是一种单独的矩阵方法: source = c(1,1,1,2,2,2,3,3,3,4,4,4) df1 = data.frame(source) df1$elapsedTime <- (ave(df1$source, df1$source,
source = c(1,1,1,2,2,2,3,3,3,4,4,4)
df1 = data.frame(source)
df1$elapsedTime <- (ave(df1$source, df1$source, FUN = seq_along))
df
# source elapsedTime
# 1 1 1
# 2 1 2
# 3 1 3
# 4 2 1
# 5 2 2
# 6 2 3
# 7 3 1
# 8 3 2
# 9 3 3
# 10 4 1
# 11 4 2
# 12 4 3
source=c(1,1,1,2,2,3,3,4,4)
df1=数据帧(源)
df1$elapsedTime如果我理解正确,您的数据是一个数据帧列表,如示例所示。如果是这样的话:
数据:
功能:
lapply(lis, function(x){
elapsedTime = ave(x[,1], x[,1], FUN = seq_along)
return(data.frame(x, elapsedTime))
}
)
如果我弄错了,请发表评论。如果我理解正确,您的数据是一个数据帧列表,如发布的示例所示。如果是这样的话:
数据:
功能:
lapply(lis, function(x){
elapsedTime = ave(x[,1], x[,1], FUN = seq_along)
return(data.frame(x, elapsedTime))
}
)
如果我弄错了,请发表评论。我认为这应该为您提供所需的lappy
代码的基础:
source = c(1,1,1,2,2,2,3,3,3,4,4,4)
df.in = data.frame(source)
df.list <- split(df.in, f = df$source)
res <- lapply(df.list, function(df){
df$elapsedTime <- seq_along(1:length(df$source))
return(df)
})
df.out <- bind_rows(res)
df.out
# source elapsedTime
# 1 1 1
# 2 1 2
# 3 1 3
# 4 2 1
# 5 2 2
# 6 2 3
# 7 3 1
# 8 3 2
# 9 3 3
# 10 4 1
# 11 4 2
# 12 4 3
我认为这应该为您提供所需的lappy
code:
source = c(1,1,1,2,2,2,3,3,3,4,4,4)
df.in = data.frame(source)
df.list <- split(df.in, f = df$source)
res <- lapply(df.list, function(df){
df$elapsedTime <- seq_along(1:length(df$source))
return(df)
})
df.out <- bind_rows(res)
df.out
# source elapsedTime
# 1 1 1
# 2 1 2
# 3 1 3
# 4 2 1
# 5 2 2
# 6 2 3
# 7 3 1
# 8 3 2
# 9 3 3
# 10 4 1
# 11 4 2
# 12 4 3