使用 table.read 在 R 中导入时出现问题
Using table.read has an issue importing in R
我相信这应该是一个简单的问题,但我似乎找不到我做错了什么?我正在导入一个 .txt 文件,它已被正确解析,但是,我无法以字符串形式访问数据框中每个单元格的内容。我希望将它们作为字符串的原因是因为 id 喜欢制作一个包含所有值的数组。
我添加了下面的代码以使用完全相同的数据集重现该问题。
data <-read.delim('https://acfdata.coworks.be/cancerdrugsdb.txt',header = TRUE)
data$Targets[1]
结果:
'CDK6; CDK4; CCND1; CCND3; CDKN2A; NRAS; CCND2; SMARCA4; KRAS'
class(data$Targets[1])
'character'
想要的结果
class(data$Targets[1]) = string
我试过用各种函数导入,也试过toString()
函数,但它仍然是一个字符。再一次,也许有不同的方法来做到这一点,但没有字符串我不能分开
'CDK6; CDK4; CCND1; CCND3; CDKN2A; NRAS; CCND2; SMARCA4; KRAS'
'CDK6, CDK4, CCND1, CCND3, CDKN2A, NRAS, CCND2, SMARCA4, KRAS'
不胜感激。
最终,我想要多个数组,每行有一个条目。
再次感谢。
您是否尝试将“目标”列'split' 转换为单独的值?即
library(tidyverse)
data <-read.delim('https://acfdata.coworks.be/cancerdrugsdb.txt',header = TRUE)
max_number_of_fields <- data %>%
mutate(Targets = str_count(string = Targets, pattern = ";")) %>%
summarise(fields = max(Targets, na.rm = TRUE))
max_number_of_fields$fields
#> [1] 68
long_df <- data %>%
relocate(Targets, .after = last_col()) %>%
separate(Targets, into = paste0("Target_", 1:(max_number_of_fields$fields + 1))) %>%
pivot_longer(-c(1:14),
values_to = "Targets") %>%
filter(!is.na(Targets)) %>%
select(-name)
#> Warning: Expected 69 pieces. Missing pieces filled with `NA` in 283 rows [1, 2,
#> 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...].
select(long_df, c(Product, Targets))
#> # A tibble: 2,923 × 2
#> Product Targets
#> <chr> <chr>
#> 1 Abemaciclib CDK6
#> 2 Abemaciclib CDK4
#> 3 Abemaciclib CCND1
#> 4 Abemaciclib CCND3
#> 5 Abemaciclib CDKN2A
#> 6 Abemaciclib NRAS
#> 7 Abemaciclib CCND2
#> 8 Abemaciclib SMARCA4
#> 9 Abemaciclib KRAS
#> 10 Abiraterone CYP17A1
#> # … with 2,913 more rows
由 reprex package (v2.0.1)
创建于 2022-03-22
我相信这应该是一个简单的问题,但我似乎找不到我做错了什么?我正在导入一个 .txt 文件,它已被正确解析,但是,我无法以字符串形式访问数据框中每个单元格的内容。我希望将它们作为字符串的原因是因为 id 喜欢制作一个包含所有值的数组。
我添加了下面的代码以使用完全相同的数据集重现该问题。
data <-read.delim('https://acfdata.coworks.be/cancerdrugsdb.txt',header = TRUE)
data$Targets[1]
结果:
'CDK6; CDK4; CCND1; CCND3; CDKN2A; NRAS; CCND2; SMARCA4; KRAS'
class(data$Targets[1])
'character'
想要的结果
class(data$Targets[1]) = string
我试过用各种函数导入,也试过toString()
函数,但它仍然是一个字符。再一次,也许有不同的方法来做到这一点,但没有字符串我不能分开
'CDK6; CDK4; CCND1; CCND3; CDKN2A; NRAS; CCND2; SMARCA4; KRAS'
'CDK6, CDK4, CCND1, CCND3, CDKN2A, NRAS, CCND2, SMARCA4, KRAS'
不胜感激。
最终,我想要多个数组,每行有一个条目。
再次感谢。
您是否尝试将“目标”列'split' 转换为单独的值?即
library(tidyverse)
data <-read.delim('https://acfdata.coworks.be/cancerdrugsdb.txt',header = TRUE)
max_number_of_fields <- data %>%
mutate(Targets = str_count(string = Targets, pattern = ";")) %>%
summarise(fields = max(Targets, na.rm = TRUE))
max_number_of_fields$fields
#> [1] 68
long_df <- data %>%
relocate(Targets, .after = last_col()) %>%
separate(Targets, into = paste0("Target_", 1:(max_number_of_fields$fields + 1))) %>%
pivot_longer(-c(1:14),
values_to = "Targets") %>%
filter(!is.na(Targets)) %>%
select(-name)
#> Warning: Expected 69 pieces. Missing pieces filled with `NA` in 283 rows [1, 2,
#> 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, ...].
select(long_df, c(Product, Targets))
#> # A tibble: 2,923 × 2
#> Product Targets
#> <chr> <chr>
#> 1 Abemaciclib CDK6
#> 2 Abemaciclib CDK4
#> 3 Abemaciclib CCND1
#> 4 Abemaciclib CCND3
#> 5 Abemaciclib CDKN2A
#> 6 Abemaciclib NRAS
#> 7 Abemaciclib CCND2
#> 8 Abemaciclib SMARCA4
#> 9 Abemaciclib KRAS
#> 10 Abiraterone CYP17A1
#> # … with 2,913 more rows
由 reprex package (v2.0.1)
创建于 2022-03-22