Как изменить значения в первом столбце без имени - PullRequest
0 голосов
/ 25 июня 2019

Как изменить записи первого столбца в матрице, возвращаемой read_csv, если у него нет заголовка?

Мои переменные в настоящее время выглядят так:

                     PostFC       C1Mean
WBGene00001816 2.475268e-01   415.694457
WBGene00001817 4.808575e+00  2451.018711

и я бы хотел переименовать WBGene0000XXXX в XXXX.

Ответы [ 3 ]

2 голосов
/ 25 июня 2019

Если я правильно понимаю ваш вопрос, то первый «неназванный» столбец, который вы описываете, - это имена строк, которых на самом деле нет в ваших данных. Frame

# Example data 
df = data.frame(PostFC = c(2.475268e-01, 4.808575e+00), C1Mean = c(415.694457, 2451.018711) )
rownames(df) = c("WBGene00001816", "WBGene00001817")
df
# PostFC    C1Mean
# WBGene00001816 0.2475268  415.6945
# WBGene00001817 4.8085750 2451.0187

# change rownames
rownames(df) = c("rowname1", "rowname2")
df
# PostFC    C1Mean
# rowname1 0.2475268  415.6945
# rowname2 4.8085750 2451.0187
2 голосов
/ 25 июня 2019

Если первый столбец на самом деле является именем строки, выполните следующие действия:

rownames(data) <- gsub(pattern = "WBGene0000", replacement = "", x = rownames(data))

Если он не соответствует, вы можете рассмотреть пакет stringr и использовать функцию substr

* 1006.* Но если это на самом деле вектор без столбца заголовка, я не знаю, как ссылаться на него, не зная структуры данных.

запустить функцию str набора данных и посмотреть, что он возвращает,Или выполните следующее в качестве теста

 colnames(data)[1] <- "test" 

Не могу помочь, пока мы не узнаем, как у вас есть имя переменной нулевой длины

1 голос
/ 25 июня 2019

Адресные записи на самом деле являются именами строк. Мы можем получить к ним доступ rownames(.).

rownames(df1)
# [1] "WBGene00001816" "WBGene00001817" "WBGene00001818" "WBGene00001819"
# [5] "WBGene00001820" "WBGene00001821" "WBGene00001822"

В R также реализовано rownames<-, то есть мы можем назначить новые имена строк, выполнив rownames(.) <- c(.).

Теперь в вашем случае похоже, что вы хотите сохранить только последние четыре цифры. Здесь мы можем использовать substring, что говорит о том, какую цифру следует извлечь. В нашем случае это 11 -ая цифра до последней, поэтому мы делаем:

rownames(df1) <- substring(rownames(df1), 11)
df1
#           PostFC     C1Mean
# 1816  0.36250598  2.1073145
# 1817  0.51068402  0.4186838
# 1818 -0.96837330 -0.7239156
# 1819  0.02331745 -0.5902216
# 1820 -0.56927945  1.7540356
# 1821 -0.51252943  0.1343385
# 1822  0.47263180  1.4366233

Обратите внимание, что дублированные имена строк недопустимы, т. Е. Если вы получите дубликаты с использованием этого метода, это приведет к ошибке.

Использованные данные

df1 <- structure(list(PostFC = c(0.362505982864934, 0.510684020059692, 
-0.968373302351162, 0.0233174467410604, -0.56927945273647, -0.512529427359891, 
0.472631804850333), C1Mean = c(2.10731450148575, 0.418683823183885, 
-0.723915648073638, -0.590221641040516, 1.75403562218217, 0.134338480077884, 
1.43662329542089)), class = "data.frame", row.names = c("1816", 
"1817", "1818", "1819", "1820", "1821", "1822"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...