我需要将数据框的所有列合并到一个新列中,该列将包含其他列中值的向量(列表)。像这样的东西
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
功能但没有取得多大成功。
感谢。
答案 0 :(得分:2)
这是一个鲜为人知的功能,您可以将矩阵附加到数据帧:
> 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
如果你想提取单个元素,你需要先用&#34; [[&#34;:
]提取> df[[4]][ , 1 ]
[1] 2 3 5