我需要将数据框的所有列合并到一个新列中,该列将包含其他列中的值的向量(列表)。像这样的东西
n = c(2, 3, 5)
s = c(3,3,5)
b = c(1,1,1)
df = data.frame(n, s, b)
n s b
1 2 3 1
2 3 3 1
3 5 5 1
我想运行一个命令,它会给我类似这样的结果:
n s b v
1 2 3 1 [2,3,1]
2 3 3 1 [3,3,1]
3 5 5 1 [5,5,1]
基本上,像这样的东西
t(as.numeric(df[1,1:3]))
[,1] [,2] [,3]
[1,] 2 3 1
为一行获取我想要的内容,但我不知道如何为所有行添加它。我尝试过各种apply
函数,但都没有成功。
谢谢。
发布于 2017-02-06 21:45:49
这是一个鲜为人知的特性,您可以将矩阵附加到数据帧中:
> df[4] <- data.matrix(df)
> df
n s b V4.n V4.s V4.b
1 2 3 1 2 3 1
2 3 3 1 3 3 1
3 5 5 1 5 5 1
> df[4]
V4.n V4.s V4.b
1 2 3 1
2 3 3 1
3 5 5 1
> df[4,1] # note that the 4th "column" actually a list needs to be addresses as a whole:
[1] NA # the
> df[4][ 1, ]
n s b
[1,] 2 3 1
如果要提取单个元素,首先需要使用"[[":
> df[[4]][ , 1 ]
[1] 2 3 5
https://stackoverflow.com/questions/42077507
复制相似问题