R 为数据帧中的每一行创建属性向量
假设我们有数据帧R 为数据帧中的每一行创建属性向量,r,vector,dataframe,attributes,row,R,Vector,Dataframe,Attributes,Row,假设我们有数据帧 attr1 | attr2 ----- | ----- 1 | 2 2 | 0 现在,对于数据帧中的每一行,我想创建一个包含attr1和attr2的向量。该向量不应该是字符串表示,而是包含这些数字的实际向量 预期的结果是: attr1 | attr2 | vec | ----- | ----- | ------- | 1 | 2 | c(1, 2) | 2 | 0 | c(2, 0) | 如何在R中实现这一点
attr1 | attr2
----- | -----
1 | 2
2 | 0
现在,对于数据帧中的每一行,我想创建一个包含attr1
和attr2
的向量。该向量不应该是字符串表示,而是包含这些数字的实际向量
预期的结果是:
attr1 | attr2 | vec |
----- | ----- | ------- |
1 | 2 | c(1, 2) |
2 | 0 | c(2, 0) |
如何在R中实现这一点
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)
注意: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
如果您需要字符串元素,请使用
paste
即df1$vec。我希望在解决方案中包含attr1和attr2,因为每一行都包含其他“不相关”的数据(不在此简化示例中)。很抱歉,我不希望将它们作为字符串,我希望它们作为实际的向量。
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"