在 r 中的 melt 函数中设置值的数据类型
Set data type of values in melt function in r
我有一个嵌套的命名列表,如下所示:
> data <- list("1"=list(rating=-1,points=190,name="Fernando"),"2"=list(rating=3,points=532,name="Carlos"))
> data
$'1'
$'1'$rating
[1] -1
$'1'$points
[1] 190
$'1'$name
[1] "Fernando"
$'2'
$'2'$rating
[1] 3
$'2'$points
[1] 532
$'2'$name
[1] "Carlos"
现在,当我在 "data" 上使用 melt 函数时,它将名称的值转换为数字而不是字符。我能理解为什么,因为值的数据类型设置为数字。有没有办法将值的数据类型转换为整体字符。
这是我使用 melt 函数时得到的结果:
> melt(data)
value L2 L1
1 -1 rating 1
2 190 points 1
3 1 name 1
4 3 rating 2
5 532 points 2
6 1 name 2
但我想要的是:
value L2 L1
1 -1 rating 1
2 190 points 1
3 Fernando name 1
4 3 rating 2
5 532 points 2
6 Carlos name 2
其中值的数据类型是字符。
我认为这应该可行; data
对象的嵌套 lapply
,然后(在转换为 as.character
之后)使用 reshape2
包的 melt
。
melt(lapply(data, function(x) lapply(x, as.character)))
value L2 L1
1 -1 rating 1
2 190 points 1
3 Fernando name 1
4 3 rating 2
5 532 points 2
6 Carlos name 2
或者只需两步 data <- lapply(data, function(x) lapply(x, as.character))
然后 melt(data)
。
您可以使用 rapply
,不确定您的嵌套性
melt(rapply(data, as.character, how="list"))
# value L2 L1
# 1 -1 rating 1
# 2 190 points 1
# 3 Fernando name 1
# 4 3 rating 2
# 5 532 points 2
# 6 Carlos name 2
这是apply
的递归版本,因此对于遍历嵌套列表很有用。
我有一个嵌套的命名列表,如下所示:
> data <- list("1"=list(rating=-1,points=190,name="Fernando"),"2"=list(rating=3,points=532,name="Carlos"))
> data
$'1'
$'1'$rating
[1] -1
$'1'$points
[1] 190
$'1'$name
[1] "Fernando"
$'2'
$'2'$rating
[1] 3
$'2'$points
[1] 532
$'2'$name
[1] "Carlos"
现在,当我在 "data" 上使用 melt 函数时,它将名称的值转换为数字而不是字符。我能理解为什么,因为值的数据类型设置为数字。有没有办法将值的数据类型转换为整体字符。
这是我使用 melt 函数时得到的结果:
> melt(data)
value L2 L1
1 -1 rating 1
2 190 points 1
3 1 name 1
4 3 rating 2
5 532 points 2
6 1 name 2
但我想要的是:
value L2 L1
1 -1 rating 1
2 190 points 1
3 Fernando name 1
4 3 rating 2
5 532 points 2
6 Carlos name 2
其中值的数据类型是字符。
我认为这应该可行; data
对象的嵌套 lapply
,然后(在转换为 as.character
之后)使用 reshape2
包的 melt
。
melt(lapply(data, function(x) lapply(x, as.character)))
value L2 L1
1 -1 rating 1
2 190 points 1
3 Fernando name 1
4 3 rating 2
5 532 points 2
6 Carlos name 2
或者只需两步 data <- lapply(data, function(x) lapply(x, as.character))
然后 melt(data)
。
您可以使用 rapply
,不确定您的嵌套性
melt(rapply(data, as.character, how="list"))
# value L2 L1
# 1 -1 rating 1
# 2 190 points 1
# 3 Fernando name 1
# 4 3 rating 2
# 5 532 points 2
# 6 Carlos name 2
这是apply
的递归版本,因此对于遍历嵌套列表很有用。