【问题标题】:Splitting each character object in multiples of data frames in a list将每个字符对象拆分为列表中的多个数据帧
【发布时间】:2014-03-04 22:51:42
【问题描述】:

这是我下面的数据集。它是一个包含 10 个数据框的列表,每个数据框包含不同的元素。我想做的是拆分每个数据框中的字符对象,以便它只显示对象中的数字,而不是字母。因为在此之后我要测试每个数据帧中的数字是偶数还是奇数,因此可能必须将其转换为整数向量。例如,对于第一个数据帧,它将返回 4。对于第二个数据帧,它将返回 8。对于第三个数据帧,它将返回 4 12,等等。

$control
[1] "A4"

$control
[1] "G8"

$pq
[1] "A4"  "G12"

$docetaxel
[1] "G8"

$docetaxel_b
[1] "A1"  "A2"  "A3"  "A4"  "A5"  "A6"  "A7"  "A8"  "A9"  "A10" "A11" "A12" "B1"  "B2"  "B3"  "B4"  "B5"  "B6"  "B7"  "B8" 
[21] "B9"  "B10" "B11" "B12" "C1"  "C2"  "C3"  "C4"  "C5"  "C6"  "C7"  "C8"  "C9"   "C10" "C11" "C12" "D1"  "D2"  "D3"  "D4" 
[41] "D5"  "D6"  "D7"  "D8"  "D9"  "D10" "D11" "D12" "E1"  "E2"  "E3"  "E4"  "E5"  "E6"  "E7"  "E8"  "E9" 

$docetaxel
[1] "E9"  "E10" "E11" "E12" "F1"  "F2"  "F3"  "F4"  "F5"  "F6"  "F7"  "F8"  "F9"  "F10" "F11" "F12" "G1"  "G2"  "G3"  "G4" 
[21] "G5"  "G6"  "G7"  "G8"  "G9"  "G10" "G11" "G12" "H1"  "H2"  "H3"  "H4"  "H5"  "H6"  "H7"  "H8"  "H9"  "H10" "H11" "H12"

$dactinomycin
[1] "E12"

$cisplatin
[1] "F8"

$cisplatin_b
[1] "A1" "A2" "A3" "A4" "A5" "A6"

$cisplatin
[1] "A6"  "A7"  "A8"  "A9"  "A10" "A11" "A12" "B1"  "B2"  "B3"  "B4"  "B5"  "B6"  "B7"  "B8"  "B9"  "B10" "B11" "B12" "C1" 
[21] "C2"  "C3"  "C4"  "C5"  "C6"  "C7"  "C8"  "C9"  "C10" "C11" "C12" "D1"  "D2"  "D3"  "D4"  "D5"  "D6"  "D7"  "D8"  "D9" 
[41] "D10" "D11" "D12" "E1"  "E2"  "E3"  "E4"  "E5"  "E6"  "E7"  "E8"  "E9"  "E10" "E11" "E12" "F1"  "F2"  "F3"  "F4"  "F5" 
[61] "F6"  "F7"  "F8"  "F9"  "F10" "F11" "F12" "G1"  "G2"  "G3"  "G4"  "G5"  "G6"  "G7"  "G8"  "G9"  "G10" "G11" "G12" "H1" 
[81] "H2"  "H3"  "H4"  "H5"  "H6"  "H7"  "H8"  "H9"  "H10" "H11" "H12"

提前谢谢你!

【问题讨论】:

    标签: r list split dataframe


    【解决方案1】:

    我认为您的列表不包含数据框,至少没有如图所示。这是一种摆脱角色的方法。这是您数据的一小部分。

    lst <- list(control="G8", pq=c("A4", "G12"), docetaxel=c("G8"), docetaxel_b=c("A1", "A2"))
    lapply(lst, function(x) as.numeric(gsub("[^0-9]", "", x)))
    

    产生:

    $control
    [1] 8
    
    $pq
    [1]  4 12
    
    $docetaxel
    [1] 8
    
    $docetaxel_b
    [1] 1 2
    

    基本上,我们只是用gsub 去掉任何不是数字("[^0-9]")的东西,然后转换为数字。您可以轻松地修改lapply 中的函数,以使用%% 2 之类的东西检查值是偶数还是奇数,尽管不知道您想知道的确切内容(偶数计数、赔率的存在等),我无法提供进一步的指导。

    【讨论】:

    • 谢谢!所以我这样做了,然后我做了 lapply(lst, function(x) x%%2==0)。然后我做了 lapply(lst, function(x) all(x)) 看看哪些只有偶数。现在,我想删除为我应用的最后一个函数返回 TRUE 的数据帧。因此,如果它们只有偶数,我想将它们从 10 个数据框的原始列表中删除。我该怎么做?
    • 假设你的原始数据在lst,你最终的真假数据在lst2,那么lst[unlist(lst2)]
    • 这给了我那些是真的(那些只有偶数的)。我该如何调整它,以便我可以让它返回 FALSE(那些不只有偶数的)?
    • @hj14 lst[!unlist(lst2)]
    猜你喜欢
    • 1970-01-01
    • 2022-01-07
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多