将数字向量中的交替值拆分为R中数据帧的列

将数字向量中的交替值拆分为R中数据帧的列,r,R,我有一个名为data的数据框,其中包含一列名为“time”的数字向量。每行都是自己的向量 >data[1, ]$time 3000 3000 2991 2961 2958 2947 2925 2836 2890 >str(data$time) $ time :List of 20 ..$ : num 3000 3000 2991 2961 2958 ... 我想将时间列中的每一行值转换为一个数据帧,这样每个奇数索引值都位于数据帧中一个名为“奇数”的列中,

我有一个名为data的数据框,其中包含一列名为“time”的数字向量。每行都是自己的向量

>data[1, ]$time
3000 3000 2991 2961 2958 2947 2925 2836 2890

>str(data$time)
$ time             :List of 20
..$ : num  3000 3000 2991 2961 2958 ...
我想将时间列中的每一行值转换为一个数据帧,这样每个奇数索引值都位于数据帧中一个名为“奇数”的列中,每个偶数索引值都位于一个名为“偶数”的列中

下面是一个虚拟示例,说明我可以如何做到这一点:

test <- c(3000,3000,2991,2961,2958,2947)
test <- data.frame(test)
odd <- test[ c(TRUE,FALSE), ] 
even <- test[ !c(TRUE,FALSE), ]
finalData <- data.frame(odd = odd, even = even )

我只是不知道如何使用上面的真实数据帧逐行执行此过程。我想用包含两个奇数和偶数列的数据帧替换上面数据帧中的时间列。这清楚吗?

我猜你的数据是这样的

time <- list(1:4, 1:6, 1:3)
data <- data.frame(cbind(time), dd=1:3)

data
#               time dd
# 1       1, 2, 3, 4  1
# 2 1, 2, 3, 4, 5, 6  2
# 3          1, 2, 3  3

time所以
data$time您的确切数据结构不是很清楚。如果您通过
dput
提供它会更容易-为什么
3000
奇数
偶数
列中?它不是基于数字,而是基于索引值。两件事:(1)我需要奇数和偶数索引值,而不是奇数和偶数。(2) 我需要的结果输出是一个新的列,这是一个数据帧。所以data$time2应该是一个包含奇数和偶数的data.frameindices@Parseltongue:更好吗?输出已经是data.frames,它们只是存储在一个列表中。非常感谢您的帮助!我仍然得到错误:
data.frame中的错误(o=x[odd],e=x[!odd]):参数意味着不同的行数:57,56
我假设这意味着我需要填充,但不确定如何做。有什么想法吗?正如我提到的,如果列的长度不相等,您需要使用NA填充或另存为list.Yup。我不知道这是有意还是无意,但这是一个非常有用的技巧。
time <- list(1:4, 1:6, 1:3)
data <- data.frame(cbind(time), dd=1:3)

data
#               time dd
# 1       1, 2, 3, 4  1
# 2 1, 2, 3, 4, 5, 6  2
# 3          1, 2, 3  3
lapply(data$time, function(x) {
    odd <- seq_along(x) %% 2 == 1
    o <- x[odd]
    e <- x[!odd]
    length(e) <- length(o)
    data.frame(o, e)
    })

# [[1]]
#   o e
# 1 1 2
# 2 3 4

# [[2]]
#   o e
# 1 1 2
# 2 3 4
# 3 5 6

# [[3]]
#   o  e
# 1 1  2
# 2 3 NA