我有数字值列表,例如
> list <- c(1,10,12,24)
> list
[1] 1 10 12 24
,我想向其附加一串字符,以便输出读取:
> list
[1] "name" 1 10 12 24
我尝试了以下代码:
list <- c("name",1,10,12,24)
或
list <- c(1,10,12,24)
list <- c("name",as.numeric(list))
但是,可以预见,所有数字都转换为字符类型:
> list <- c(1,10,12,24)
> list <- c("name",as.numeric(list))
> list
[1] "name" "1" "10" "12" "24"
在前面添加字符类型时,如何保留数字类型?
[编辑]目的是将其添加为一行,其中DF [1]中包含字符串,DF [2:5]包含数字。
@fernando几乎有一个想法:如果要将其与data.frame
组合,则"行"应该是list
。
这里有几个示例:
## A sample `data.frame`
mydf <- data.frame(A = c("one", "two"), B = 1:2, C = 3:4,
D = 5:6, stringsAsFactors = FALSE)
## Your initial vector...
addMe <- c(1, 10, 12)
## ... now as a list
addMe <- c("name", as.list(addMe))
addMe
# [[1]]
# [1] "name"
#
# [[2]]
# [1] 1
#
# [[3]]
# [1] 10
#
# [[4]]
# [1] 12
#
## Put it all together...
new <- rbind(mydf, addMe)
new
# A B C D
# 1 one 1 3 5
# 2 two 2 4 6
# 3 name 1 10 12
str(new)
# 'data.frame': 3 obs. of 4 variables:
# $ A: chr "one" "two" "name"
# $ B: num 1 2 1
# $ C: num 3 4 10
# $ D: num 5 6 12
或者,创建一个行(或在必要时)data.frame
并与现有data.frame
绑定:
addMe <- c(1, 10, 12)
rbind(mydf, setNames(cbind("name", data.frame(t(addMe))), names(mydf)))
# A B C D
# 1 one 1 3 5
# 2 two 2 4 6
# 3 name 1 10 12
主要注意:这取决于您的第一列是角色,而不是因素,可变。如果它们是因素,则需要确保变量包含正确的levels
(或首先转换为字符,然后重新因子)。
如何使用字符串列表元素名称:
l <- list('name'=c(1,10,12,24))
l
## $name
## [1] 1 10 12 24
names(l)
## [1] "name"
按名称提取数字向量:
l[["name"]]
## [1] 1 10 12 24
将其放入数据框架:
as.data.frame(l)
## name
## 1 1
## 2 10
## 3 12
## 4 24
使用vector
,而不是list
。您不能混合向量中的类型,而是使用list
:
my.list = list(1,10,12,24)
my.list = append("name", my.list)
记住,R中的"生长"结构对性能非常不利。