提取从存储在数据帧中的超链接字符串中显示的文本

问题描述 投票:0回答:1
对于第一行不包含具有超链接公式的字符串的列,它对整列不起作用。 peprex是:

DF <- data.frame(x = c('HYPERLINK("[Individual files/NetworkData4MassiveExport_Individual_1.xlsx]1_2016_Nodes!A3", "\'Nodes\' tab")', 'NA()'), y = c('NA()', 'HYPERLINK("[Individual files/NetworkData4MassiveExport_Individual_2.xlsx]2_2019_Nodes!A3", 1)')) DF DF[] <- lapply(DF, function(x) ifelse(substr(x, 1, 9) == 'HYPERLINK', trimws(gsub('[\")]', '', unlist(strsplit(x, ','))[2])), gsub('"', '', x))) DF

您可以使用

mutate(across(everything(), ...))

选择所有变量,然后该函数可以使用适当的正则表达式。 在下面的代码中,我将其找到

"HYPERLINK"

首先,如果不存在,请返回数据的原始值。 否则,返回逗号和最后一个紧密的括号之间的内容。
library(dplyr)
DF <- data.frame(x = c('HYPERLINK("[Individual files/NetworkData4MassiveExport_Individual_1.xlsx]1_2016_Nodes!A3", "\'Nodes\' tab")', 'NA()'), y = c('NA()', 'HYPERLINK("[Individual files/NetworkData4MassiveExport_Individual_2.xlsx]2_2019_Nodes!A3", 1)'))
DF %>% 
  mutate(across(everything(), 
                ~ifelse(grepl("HYPERLINK", .x), 
                        gsub(".*\\[.*\\].*, (.*)\\)$", "\\1", .x), 
                        .x)))
#>               x    y
#> 1 "'Nodes' tab" NA()
#> 2          NA()    1
r dataframe
1个回答
0
投票
用rreprexv2.1.1.9000

于2025-03-12创建
    
	

© www.soinside.com 2019 - 2025. All rights reserved.