Привет всем, я новичок в R
и ценю ваши советы по этому поводу.
Я изо всех сил пытался преобразовать переменные (объекты) в моем dataframe
в string
и построить их с помощью цикла for, как подробно описано ниже.
COUNTRY: China Belgium ...
COMPANY: XXX Inc. YYY Inc. ...
Здесь СТРАНА и КОМПАНИЯ - категориальные переменные.
Я использовал toString()
, а также as.character()
для преобразования имени переменной в string
, поэтому я могу указать имя сюжета, но не могу заставить его работать. Мне нужны 4 переменные, как указано в приведенном ниже коде в цикле for для двух целей:
barplot()
но ни преобразование строк, ни цикл for не работают должным образом, как я хотел. Может ли кто-нибудь помочь мне с правильной командой для этой цели? Ваша помощь очень ценится ... С уважением,
КОД
Frequency_COUNTRY <- table(COUNTRY)#Get Frequency for COUNTRY
Relative_Frequency_COUNTRY <- table(COUNTRY) / length(COUNTRY)#Get Relative
#Frequency (Percentage %) for Variable COUNTRY
Frequency_COMPANY <- table(COMPANY) #Get Frequency and Relative Frequency for COMPANY
Relative_Frequency_COMPANY <- table(COMPANY) / length(COMPANY)
Categorical_Variable_List = c(Frequency_COUNTRY,
Relative_Frequency_COUNTRY ,
Frequency_COMPANY,
Relative_Frequency_COMPANY)`# Get list of 4 variables above
for (Categorical_Variable in Categorical_Variable_List){#Plot 4 variables using a for loop
A = toString(Categorical_Variable) #Trying to convert non-string variable name to string
plotName <- paste("BarChart_", A, sep = "_")# Specify plot name, e.g. BarChart_Frequency_COUNTRY
png(file = plotName)#Create png file
barplot(Categorical_Variable) #use barplot() to make graph
dev.off()`# Switch off dev
}
Также, пожалуйста, используйте dput
в вашем фрейме данных / его образце и загрузите сюда
Уважаемый Омри Атия. Теперь я использовал dput для создания образца фрейма данных. Теперь он находится в моей переменной среды. Кажется, я не могу его спасти. Не могли бы вы подробнее рассказать, как его сохранить и загрузить? Большое спасибо!
@Riccardo Прочтите принятый ответ здесь о том, как пользователи сайта ожидают вывода dput()
.
1) Ваш Categorical_Variable_List
вообще категоричен к нет. 2) Используйте Categorical_Variable_List <- list(...)
, а не c(...)
.
@RuiBarradas. Привет, Руи, большое спасибо за ответ на мой вопрос. Я использую list(Frequency_COUNTRY,...)
, как вы указали, однако toString () не выводит имя объекта, то есть «Frequency_COUNTRY» в виде строки. Вместо этого он генерирует строку значений в таблице частот, как показано ниже: toString(Frequency_Country)
>>> [1] "1, 5, 4, 4, 1, 2, 2, 3, 9, 1, 13, 2, 1, 2 , 1, 1, 1, 1, 1, 1, 2, 1, 7, 52, 1 ". На самом деле я намереваюсь преобразовать имя объекта Frequency_Country, которое представляет собой частотную таблицу стран, в строку, чтобы я мог использовать ее для названия своего сюжета.
@RuiBarradas Привет, Руи. Большое спасибо за то, что нашли время исправить код. Теперь он работает правильно. Еще один последний вопрос. Я заметил, что вы используете [[i]] в Variable_List[[i]]
. интересно, почему [i] не работает. Это потому, что мы используем (Frequency_COUNTRY = Frequency_COUNTRY
... в списке ()? Вы сделали то же самое для Variable_Name[[i]]
. Однако, когда я делаю это на консоли: Variable_Name[1]
, я получаю желаемое имя объекта: [1] "Frequency_Country"
, которое отлично служит моей цели. Не могли бы вы подробнее рассказать об использовании двойных квадратных скобок [[]]. Многие думают заранее. Ваше здоровье.
Проверьте R для науки о данных.
@RuiBarradas. Большое спасибо :)
Ваш код обрабатывает Categorical_Variable_List
, как если бы это был список переменных категоричныйназванный. Это ни то, ни другое.
Следующий код исправляет эти ошибки и строит график из 4 гистограмм. В своем коде удалите два вызова par
, один до и другой после цикла for
.
Я создам набор данных, чтобы протестировать код.
set.seed(1234)
n <- 20
COUNTRY <- sample(LETTERS[1:5], n, TRUE)
COMPANY <- sample(letters[1:4], n, TRUE)
Frequency_COUNTRY <- table(COUNTRY) # Get Frequency for COUNTRY
Relative_Frequency_COUNTRY <- table(COUNTRY) / length(COUNTRY)#Get Relative
# Frequency (Percentage %) for Variable COUNTRY
Frequency_COMPANY <- table(COMPANY) # Get Frequency and Relative Frequency for COMPANY
Relative_Frequency_COMPANY <- table(COMPANY) / length(COMPANY)
Variable_List <- list(Frequency_COUNTRY = Frequency_COUNTRY,
Relative_Frequency_COUNTRY = Relative_Frequency_COUNTRY,
Frequency_COMPANY = Frequency_COMPANY,
Relative_Frequency_COMPANY = Relative_Frequency_COMPANY) # Get list of 4 variables above
Variable_Name <- names(Variable_List)
old_par <- par(mfrow = c(2, 2))
for (i in seq_along(Variable_List)){ # Plot 4 variables using a for loop
plotName <- paste("BarChart", Variable_Name[[i]], sep = "_") # Specify plot name
print(plotName) # for debugging only
#png(file = plotName) # Create png file
barplot(Variable_List[[i]]) # use barplot() to make graph
#dev.off() # Switch off dev
}
par(old_par)
Я не могу прочитать твой вопрос. Исправьте форматирование. Каждая строка кода должна иметь в начале четыре или более пробелов. НЕ ставьте кавычки вокруг кода.