为数据框中的每一行创建属性向量

时间:2017-04-29 17:51:22

标签: r vector dataframe attributes row

假设我们有数据框

attr1 | attr2
----- | -----
  1   |   2
  2   |   0

现在,对于数据框中的每一行,我想创建一个包含attr1attr2的向量。此向量不应是字符串表示形式,而应是包含这些数字的实际向量。

期望的结果是:

attr1 | attr2 |   vec   |
----- | ----- | ------- | 
  1   |   2   | c(1, 2) |
  2   |   0   | c(2, 0) |

如何在R?

中完成

1 个答案:

答案 0 :(得分:0)

df1 <- data.frame(attr1 = c(1,2),attr2 = c(2,0))
df1
#   attr1 attr2
# 1     1     2
# 2     2     0

df1$vec <- noquote(paste("c(",paste(df1$attr1,df1$attr2,sep=","),")",sep=""))
df1
#   attr1 attr2    vec
# 1     1     2 c(1,2)
# 2     2     0 c(2,0)

检查每列的类

sapply(df1,class)
#      attr1     attr2       vec 
#  "numeric" "numeric" "noquote" 

注意:vec列实际上是一个字符串,因此只需使用noquote()函数删除引号。

如果您只想将数字放在一起,仍然是字符向量,但列中没有c()

df1 <- data.frame(attr1 = c(1,2),attr2 = c(2,0))
df1
#   attr1 attr2
# 1     1     2
# 2     2     0

df1$vec <- paste(df1$attr1,df1$attr2, sep=",")
df1
#   attr1 attr2 vec
# 1     1     2 1,2
# 2     2     0 2,0

检查每列的类

sapply(df1,class)
#     attr1       attr2         vec 
# "numeric"   "numeric" "character"