Есть несколько хороших примеров для этого в R Wiki . Я украду пару здесь:
Метод слияния
Поскольку ваши ключи называются одинаковыми, короткий способ сделать внутреннее соединение - merge ():
merge(df1,df2)
полное внутреннее соединение (все записи из обеих таблиц) может быть создано с помощью ключевого слова «все»:
merge(df1,df2, all=TRUE)
левое внешнее соединение df1 и df2:
merge(df1,df2, all.x=TRUE)
правое внешнее объединение df1 и df2:
merge(df1,df2, all.y=TRUE)
вы можете перевернуть их, пощекотать их и протрите их, чтобы получить другие два внешних соединения, о которых вы спрашивали:)
Метод подстроки
Левое внешнее соединение с df1 слева с использованием метода подстроки будет:
df1[,"State"]<-df2[df1[ ,"Product"], "State"]
Можно создать и другую комбинацию внешних соединений путем макетирования примера нижнего нижнего соединения. (да, я знаю, что это эквивалент слова «Я оставлю это как упражнение для читателя ...»)
Если вы ищете кеш для удаления своего собственного приложения, просто удалите кеш-каталог и все его выполнили!
public static void deleteCache(Context context) {
try {
File dir = context.getCacheDir();
deleteDir(dir);
} catch (Exception e) { e.printStackTrace();}
}
public static boolean deleteDir(File dir) {
if (dir != null && dir.isDirectory()) {
String[] children = dir.list();
for (int i = 0; i < children.length; i++) {
boolean success = deleteDir(new File(dir, children[i]));
if (!success) {
return false;
}
}
return dir.delete();
} else if(dir!= null && dir.isFile()) {
return dir.delete();
} else {
return false;
}
}
Ответ от dhams правилен (после нескольких раз редактировался), но, как показывают многие изменения кода, трудно написать правильный и надежный код для удаления каталога (с помощью sub-dirs) самостоятельно. Поэтому я настоятельно рекомендую использовать Apache Commons IO или какой-либо другой API, который сделает это для вас:
import org.apache.commons.io.FileUtils;
...
// Delete local cache dir (ignoring any errors):
FileUtils.deleteQuietly(context.getCacheDir());
PS: Также удалите каталог, возвращаемый context.getExternalCacheDir (), если вы используете это.
Чтобы иметь возможность использовать Apache Commons IO, добавьте это в свой файл build.gradle
в dependencies
:
compile 'commons-io:commons-io:2.4'
implementation 'commons-io:commons-io:2.5'
. Сначала я попробовал 2.6, но у меня есть некоторая ошибка, например noSuchMethodException, поэтому, пожалуйста, просто используйте версию 2.5. Последние версии здесь: mvnrepository.com/artifact/commons-io/commons-io
– Juan Ignacio Avendaño Huergo
4 June 2018 в 21:07
Я не уверен, но я тоже сеял этот код. эта треска будет работать быстрее и, на мой взгляд, просто. просто загрузите каталог кеша приложений и удалите все файлы в каталоге
public boolean clearCache() {
try {
// create an array object of File type for referencing of cache files
File[] files = getBaseContext().getCacheDir().listFiles();
// use a for etch loop to delete files one by one
for (File file : files) {
/* you can use just [ file.delete() ] function of class File
* or use if for being sure if file deleted
* here if file dose not delete returns false and condition will
* will be true and it ends operation of function by return
* false then we will find that all files are not delete
*/
if (!file.delete()) {
return false; // not success
}
}
// if for loop completes and process not ended it returns true
return true; // success of deleting files
} catch (Exception e) {}
// try stops deleting cache files
return false; // not success
}
Он получает все файлы кеша в массиве файлов getBaseContext (). getCacheDir (). listFiles (), а затем удаляет один за другим в цикл методом file.delet ()
Я думаю, вы должны помещать clearApplicationData()
перед super.OnDestroy().
. Ваше приложение не может обрабатывать какие-либо методы, когда он был отключен.
if (dir != null && dir.isDirectory()) { ... }
else if(dir.isFile()) { return dir.delete(); }
– Pierfrancesco Soffritti 5 October 2015 в 09:12