Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 使用单独列中的值将函数应用于列表中的列_R_List_Lapply - Fatal编程技术网

R 使用单独列中的值将函数应用于列表中的列

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,

我试图对二维数据列表应用一个函数

我正在处理的数据是从许多探测器中随时间进行测量的。我将时间索引应用于矩阵,该矩阵在探针更改时重置

我通过将列表转换为单个数据帧实现了这一点,但是,随着数据集的增长,我希望使用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,  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