Nat*_*ate 3 r list substr lapply
说我有一个数据帧列表:
DF1 <- data.frame(mtcars)
DF2 <- data.frame(mtcars*2)
mydatalist <-list(DF1,DF2)
Run Code Online (Sandbox Code Playgroud)
如何在列表中的所有列上应用函数,并返回结果列表?例如,假设我要提取qsec列的第一个数字(第7个).我可以轻松地为第一项调用它:
mydatalist[[1]][7]
Run Code Online (Sandbox Code Playgroud)
但是我想要查看列表中每个元素(DF1和DF2)的所有第7列.我怎么称呼它?
这不起作用:
mydatalist[[]][7]
Error in mydatalist[[]] : invalid subscript type 'symbol'
Run Code Online (Sandbox Code Playgroud)
我的目的是我想要一个函数,比如substr:
lapply(mydatalist[[1]][7],substr,0,2)
lapply(mydatalist[[2]][7],substr,0,2)
Run Code Online (Sandbox Code Playgroud)
但这不起作用:
lapply(mydatalist[[]][7],substr,0,2)
Run Code Online (Sandbox Code Playgroud)
我该怎么做?
谢谢!
要仅获取列表中每个数据框的第7列,您可以使用
lapply(mydatalist, "[", 7) ## you can also get multiple columns with c(1,5,etc)
Run Code Online (Sandbox Code Playgroud)
作为数据框的列,和
lapply(mydatalist, "[[", 7)
Run Code Online (Sandbox Code Playgroud)
将其视为矢量.要按名称引用它/它们,您可以像使用列号一样使用该名称
lapply(mydatalist, "[", "qsec")
Run Code Online (Sandbox Code Playgroud)
要substr在列上使用,首先必须访问该列.然后你应用可以使用匿名函数来完成工作substr.
lapply(mydatalist, function(x) substr(x[[7]], 0, 2)) ## or x[["qsec"]]
# [[1]]
# [1] "16" "17" "18" "19" "17" "20" "15" "20" "22" "18"
# [11] "18" "17" "17" "18" "17" "17" "17" "19" "18" "19"
# [21] "20" "16" "17" "15" "17" "18" "16" "16" "14" "15"
# [31] "14" "18"
#
# [[2]]
# [1] "32" "34" "37" "38" "34" "40" "31" "40" "45" "36"
# [11] "37" "34" "35" "36" "35" "35" "34" "38" "37" "39"
# [21] "40" "33" "34" "30" "34" "37" "33" "33" "29" "31"
# [31] "29" "37"
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3784 次 |
| 最近记录: |