我必须以精确的格式指定一些参数,才能在函数中工作。很难解释,但这里有一些我需要的那种格式的示例数据。
dftargets=list(
age=list("age1824"=0.1, "age2534"=0.25, "age3544"=0.3, "age4554"=0.25, "age55+"=0.1),
sex=list('Male'=0.49, 'Female'=0.51))
> dftargets
$age
$age$age1824
[1] 0.1
$age$age2534
[1] 0.25
$age$age3544
[1] 0.3
$age$age4554
[1] 0.25
$age$`age55+`
[1] 0.1
$sex
$sex$Male
[1] 0.49
$sex$Female
[1] 0.51
我的数据采用这种格式作为单独的列表。
age_label <- c("age1824", "age2534", "age3544", "age4554", "age55+")
age_values <- c(0.1, 0.25, 0.3, 0.25, 0.1)
sex_label <- c("Male", "Female")
sex_values <- c(0.49, 0.51)
有没有办法将我的数据从单独的列表强制转换为上述数据帧格式?我知道我可以输入它,但想知道是否有更简单的方法。非常感谢任何帮助。非常感谢
答案 0 :(得分:4)
可能有更好的方法,但以下方法可行:
age <- as.list(age_values)
names(age)<-age_label
sex <- as.list(sex_values)
names(sex) <- sex_label
dftargets=list(age=age,sex=sex)
names(dftargets)<-c("age","sex")
答案 1 :(得分:2)
这是一个单行:
age_label <- c("age1824", "age2534", "age3544", "age4554", "age55+")
age_values <- c(0.1, 0.25, 0.3, 0.25, 0.1)
sex_label <- c("Male", "Female")
sex_values <- c(0.49, 0.51)
dftargets <- list(age = as.list(setNames(age_values,age_label)),
sex = as.list(setNames(sex_values,sex_label)))
dftargets
#> $age
#> $age$age1824
#> [1] 0.1
#>
#> $age$age2534
#> [1] 0.25
#>
#> $age$age3544
#> [1] 0.3
#>
#> $age$age4554
#> [1] 0.25
#>
#> $age$`age55+`
#> [1] 0.1
#>
#>
#> $sex
#> $sex$Male
#> [1] 0.49
#>
#> $sex$Female
#> [1] 0.51
Created on 2021-07-01 by the reprex package (v0.3.0)
答案 2 :(得分:2)
如果每个给定的组中有多个 split
可以使用:
list(age = split(age_values, age_label)
, sex = split(sex_values, sex_label))
答案 3 :(得分:1)
喜欢吗?
age_label <- c("age1824", "age2534", "age3544", "age4554", "age55+")
age_values <- c(0.1, 0.25, 0.3, 0.25, 0.1)
sex_label <- c("Male", "Female")
sex_values <- c(0.49, 0.51)
names(age_values) <- age_label
names(sex_values) <- sex_label
dft <- list()
dft[["age"]] <- age_values
dft[["sex"]] <- sex_values
dft